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