所以我一直在 Xcode 中使用 PaintCode 和 StyleKits。我做了一个按钮,用它自己的子类创建了一个 UIView,它在我的 ViewController 和我的设备上显示得很好。但是,我想将此 UIView 转换为 UIButton,因为我希望代码在被点击时执行。我该怎么做呢?
谢谢你们,祝你们玩得开心:)
我使用 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];
但这不会像一个按钮 - 所以你可能不想这样做。
@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)