覆盖'drawRect'时忽略UIButton样式设置

时间:2013-12-11 20:03:55

标签: ios objective-c uibutton

我创建了一个自定义iOS数字键盘,按钮有圆角:

control.layer.cornerRadius = 6;
control.layer.opacity = 1;

在我要绘制图像的其中一个按钮上,我已经将UIButton子类化,以覆盖'drawRect'函数。

@interface KfKeypadButtonWithDrawing : UIButton

- (void)drawRect:(CGRect)rect;

@end

drawRect实现只是在按钮上绘制了一些线条。没什么特别的。

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    // custom drawing code to create an image on the button
}

然而,一旦我覆盖drawRect,按钮就会停止圆角。有没有办法在按钮上绘制图像并让按钮尊重cornerRadius样式设置?

谢谢,

亚伦

2 个答案:

答案 0 :(得分:0)

尝试将您尝试在drawRect中绘制的内容放入图像(png,jpg)并使用UIButtons setImage:forStatesetBackgroundImage:forState

答案 1 :(得分:0)

是的,就像这样:

override func drawRect(rect: CGRect) {
    // the custom drawing
    let roundedRect = UIBezierPath(roundedRect: rect, cornerRadius: 20)
    UIColor.redColor().setFill()
    roundedRect.fill()

    // call super
    super.drawRect(rect)
}