2016-12-31 3 views
0

У меня странное поведение, ограничения не хотят обновляться в Interface Builder.@IBInspectable NSLayoutConstraint не работает Xcode 8.2.1 (8C1002)

Здесь 2 варианта моего кода и оба не работают.

extension NSLayoutConstraint { 

    @IBInspectable var preciseConstant: CGFloat { 
     get { 
      return constant * UIScreen.main.scale 
     } 
     set { 
      constant = CGFloat(newValue)/UIScreen.main.scale 
     } 
    } 
} 

@IBDesignable class CustomLayoutConstraint: NSLayoutConstraint { 
    @IBInspectable var screenHeight: CGFloat = 0.0 { 
     didSet { 
      changeContraint() 
     } 
    } 

    func changeContraint() { 
     self.constant = self.screenHeight/UIScreen.main.scale 
    } 
} 

enter image description here

Есть ли моя ошибка или это ошибка Xcode?

ответ

0

Когда вы используете IBInspectable, ваша логика didSet не работает. Все, что вам нужно сделать, это изменить необходимые свойства (например, self.constant) в методе awakeFromNib.

+0

Нет, это работает. Например. '@IBDesignable class CustomView: UIView { @IBInspectable var backColor: UIColor? { didSet { backgroundColor = backColor } } } ' –