11

我正在创建一个自定义类UIButton来增加点击区域。我需要该用户可以在情节提要本身中输入填充。所以我做了一个IBInspectable财产。

@IBDesignable class UIIconButton: UIButton {
    @IBInspectable var touchPadding:UIEdgeInsets = UIEdgeInsetsZero
}

但它没有显示在情节提要中。但是,如果替换相同,CGRect则它在情节提要中可见。

4

1 回答 1

27

从 Xcode 7 开始,Interface Builder 不能理解UIEdgeInsetsZero@IBInspectable(无赖!)。

CGFloat但是,您可以通过使用属性间接设置边缘插入来解决此问题:

public class UIIconButton: UIButton {

  @IBInspectable public var bottomInset: CGFloat {
    get { return touchPadding.bottom }
    set { touchPadding.bottom = newValue }
  }
  @IBInspectable public var leftInset: CGFloat {
    get { return touchPadding.left }
    set { touchPadding.left = newValue }
  }
  @IBInspectable public var rightInset: CGFloat {
    get { return touchPadding.right }
    set { touchPadding.right = newValue }
  }
  @IBInspectable public var topInset: CGFloat {
    get { return touchPadding.top }
    set { touchPadding.top = newValue }
  }

  public var touchPadding = UIEdgeInsetsZero    
}

这将在界面生成器中正确显示bottomInsetleftInset等。

于 2016-08-24T16:04:22.937 回答