【问题标题】:IBInspectable UIEdgeInsets not shown in IBOutletIBInspectable UIEdgeInsets 未显示在 IBOutlet 中
【发布时间】:2016-10-24 03:52:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios storyboard xcode7 xib ibinspectable


    【解决方案1】:

    从 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 等。

    【讨论】:

    • 我花了几个小时才找到这个解决方案。
    猜你喜欢
    • 2019-04-27
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多