PaintCode中的UIButton(Swift)

时间:2016-07-19 11:07:21

标签: ios swift uiview uibutton paint-code

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

谢谢你们,并且有一个好人:)

2 个答案:

答案 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)