1

所以我一直在 Xcode 中使用 PaintCode 和 StyleKits。我做了一个按钮,用它自己的子类创建了一个 UIView,它在我的 ViewController 和我的设备上显示得很好。但是,我想将此 UIView 转换为 UIButton,因为我希望代码在被点击时执行。我该怎么做呢?

谢谢你们,祝你们玩得开心:)

4

2 回答 2

2

我使用 PaintCode 的 UIImage 方法,并将该 UIImage 用作 UIButton 的图像。这是我使用的代码,它在 ObjC 中,但应该很容易转换为 Swift。

PaintCode 生成的代码——你不需要写的东西(假装这个类叫做 PaintCodeClass):

+ (UIImage*)imageOfIcon
{
   if (_imageOfIcon)
        return _imageOfIcon;

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(30, 30), NO, 0.0f);
    [PaintCodeClass drawIcon];

    _imageOfIcon = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return _imageOfIcon;
}

和我的代码:

UIImage *image = [PaintCodeClass imageOfIcon];
UIButton *button = (initialize, set frame, etc)
[button setImage:image forState:UIControlStateNormal];

有些人更喜欢这样:

[button setBackgroundImage:image forState:UIControlStateNormal];

而不是所有这些,如果你真的想要,你可以这样做:

[button addSubview:whateverThePaintCodeViewIsCalled];

但这不会像一个按钮 - 所以你可能不想这样做。

于 2016-07-19T13:13:47.847 回答
0

@Mitch Cohens 在 Swift 4.1 中回答:

static var icon: UIImage {
    UIGraphicsBeginImageContextWithOptions(CGSize.init(width: 50, height: 50), false, 0.0)
    PaintCodeClass.drawIcon()
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image!
}

用法:

button.setImage(PaintCodeClass.icon, for: .normal)

于 2018-07-10T16:16:47.260 回答