2014-08-27 2 views
0

Я пытаюсь запугать IBDesignable, чтобы поместить значок в правой части ярлыка кнопки. Он работает в симуляторе, но раскадровка не перемещает значок справа.IBDesignable drawRect не работает?

@IBDesignable class IconLabelButtonView : UIButton { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.setup() 
    } 

    required init(coder : NSCoder) { 
     super.init(coder:coder) 
     self.setup() 
    } 

    func setup() { 

    } 


    override func drawRect(rect: CGRect) 
    { 
     super.drawRect(rect) 

     let imageSize:CGSize = self.imageView.frame.size 
     let titleSize:CGSize = self.titleLabel.frame.size 

     let labeledIconButtonBufferMagnitude:CGFloat = 6.0 

     let imagePadding:CGFloat = ceil(labeledIconButtonBufferMagnitude/2) 
     let titlePadding:CGFloat = floor(labeledIconButtonBufferMagnitude/2) 

     self.imageEdgeInsets = UIEdgeInsetsMake(0.0, (titleSize.width + imagePadding), 0.0, -(titleSize.width + imagePadding)) 
     self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -(imageSize.width + titlePadding), 0.0, (imageSize.width + titlePadding)) 

    } 


} 

Раскадровка (неправильно)

storyboard view

Simulator Посмотреть (правильный)

simulator view

ответ

1

Вы на самом деле не делает каких-либо графического ядра рисования в методе drawRect(). Либо сделайте какой-нибудь рисунок в текущем CGContextRef, либо переместите этот код где-то вроде layoutSubviews().

0

У меня была аналогичная проблема с одной из моих пользовательских IBInspectable UIButtons. Проверьте мой BlogPost здесь: http://www.hixfield.net/blog/2015/03/function-call-order-for-custom-uibutton-with-ibdesignable-ibinspectable/

Более конкретно я думаю, что вы должны реализовать layoutSubviews правильно расположить значок (в моей пользовательской кнопки я должен был сделать это, чтобы сделать этикетку кнопки такой же, как, по мнению кнопка) ...

Его цель-код c, но это все равно должно дать вам некоторое представление.

Смежные вопросы