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    
}

これにより、Interface builder 内bottomInsetに、 などが正しく表示されます。leftInset

于 2016-08-24T16:04:22.937 に答える