4

ボタン用のこのカスタムクラスがあります。

import UIKit

@IBDesignable
class CustomButton: UIButton {

    @IBInspectable var cornerRadiusValue: CGFloat = 10.0 {
        didSet {
            setUpView()
        }
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.cornerRadius = 10.0
    }

    override func awakeFromNib() {
        setUpView()
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        setUpView()
    }

    func setUpView() {
        self.layer.cornerRadius = 10.0
    }

}

しかし、ストーリーボードのボタンに角の半径が表示されません。

@IBInspectable では、インスペクタ パネルで値を変更できることを理解しています。それは私が探しているものではないと思います。

そのクラスでボタンを作成するときに、角の半径がストーリーボードに表示されるようにしたいと思います。それが@IBDesignableの機能だと思いました。

4

3 に答える 3

13

コードが IB でクラッシュしているため、デザイン性が損なわれています。動作するはるかに単純なコードを次に示します。

@IBDesignable
class CustomButton: UIButton {
    @IBInspectable var cornerRadiusValue: CGFloat = 10.0 {
        didSet {
            setUpView()
        }
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        setUpView()
    }
    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        setUpView()
    }
    func setUpView() {
        self.layer.cornerRadius = self.cornerRadiusValue
        self.clipsToBounds = true
    }
}

これで、ボタンは検査可能でデザイン可能になりました。

ここに画像の説明を入力

また、実行中のアプリでも機能します。

于 2016-04-21T05:21:03.850 に答える