我正在创建一个自定义类UIButton
来增加点击区域。我需要该用户可以在情节提要本身中输入填充。所以我做了一个IBInspectable
财产。
@IBDesignable class UIIconButton: UIButton {
@IBInspectable var touchPadding:UIEdgeInsets = UIEdgeInsetsZero
}
但它没有显示在情节提要中。但是,如果替换相同,CGRect
则它在情节提要中可见。
我正在创建一个自定义类UIButton
来增加点击区域。我需要该用户可以在情节提要本身中输入填充。所以我做了一个IBInspectable
财产。
@IBDesignable class UIIconButton: UIButton {
@IBInspectable var touchPadding:UIEdgeInsets = UIEdgeInsetsZero
}
但它没有显示在情节提要中。但是,如果替换相同,CGRect
则它在情节提要中可见。
从 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
}
这将在界面生成器中正确显示bottomInset
、leftInset
等。