1

私が持っているストーリーボードではUITextField、カスタムクラスも作成しました:

class WLTextField: UITextField {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        layer.cornerRadius = 2
        layer.masksToBounds = true
        layer.borderColor = UIColor.grayColor().CGColor
        layer.borderWidth = 1
    }
}

次に、このクラスを my にアタッチしましたUITextField:

ここに画像の説明を入力

しかし、ストーリーボードにはこれに対する結果はありません。どうすればこれを達成できますか?のような効果を得る必要があり@IBDesignablesます。しかし、すべてのテキスト フィールドに何を設定する必要があるかはわかっているので、値を設定して 内でこれを更新する必要はありませんdidSet

一部の UIView の Storyboard で変更を有効にするには、少なくとも 1 つの値を設定する必要がありますか?

4

1 に答える 1

2

コンポーネントを Interface Builder でレンダリングするには、クラスにフラグを立て@IBDesignable、初期化を実装する必要がありますinit(frame: CGRect)-

@IBDesignable class WLTextField: UITextField {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupLayer()
    }

    required override init(frame: CGRect) {
        super.init(frame: frame)
        setupLayer()
    }

    func setupLayer () {
        layer.cornerRadius = 2
        layer.masksToBounds = true
        layer.borderColor = UIColor.grayColor().CGColor
        layer.borderWidth = 1
    }
}
于 2015-08-31T12:07:32.220 に答える