2016-06-22 5 views
5

私はUIButtonのカスタムクラスを作成してタップ領域を増やしています。そのユーザーはストーリーボード自体にパディングを入力する必要があります。だから私はIBInspectableのプロパティを作る。IBInutpectable UIEdgeInsetsがIBOutletに表示されない

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

ただし、ストーリーボードには表示されません。しかし、同じものをCGRectと置き換えると、ストーリーボードに表示されます。

答えて

15

Xcode 7以降、Interface Builderは@IBInspectable(bummer!)としてUIEdgeInsetsZeroを認識しません。

あなたは間接的にエッジのインセットを設定する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などが表示されます。

+0

この解決策には数時間かかりました。 – Urban

関連する問題