Настройки стиля UIButton игнорируются при переопределении 'drawRect'

Я создал пользовательскую цифровую клавиатуру iOS, где кнопки имеют закругленные углы:

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

На одной из кнопок я хочу нарисовать изображение, и я подклассифицировал UIB-кнопку, чтобы переопределить функцию '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 ответа

Да, вот так:

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)
}

Попытайтесь поместить вещи, которые вы пытаетесь нарисовать в drawRect в изображение (PNG, JPG) и использовать UIButtonssetImage:forState или же setBackgroundImage:forState,

Другие вопросы по тегам