Xcode
@IBDesignableを使用してInterface Builderでカスタムコントロールを作成する
サーチ…
備考
@IBDesignable
および@IBInspectable
ディレクティブの導入により、Interface Builderでカスタムコントロールを作成する方がはるかに簡単になりました。開発者は、ほんの数行のコードを追加するだけで、豊富で複雑で完全にアニメーション化されたコントロールを作成できるようになりました。私はいくつの開発者がまだこの機能を完全に受け入れていないのかに驚いています。既存のクラスにほんの数行のコードを追加すると、作業がずっと簡単になることがよくあります。
これらの機能はObjective-Cでも利用可能であり、古いクラスに人生を呼吸する素晴らしい方法です。 Objective-Cの構文上の同等物はIB_DESIGNABLEとIBInspectableですが、今はSwiftの例に集中します。
ライブレンダリングされた丸みのあるビュー
これは、iOS開発での共通の要件であり、常にコードでのみ行う必要がありました(または画像を使用していました!)。 Interface Builderで彼のようなことをプレビューするのは非常に簡単ですが、それを使用しないという理由は絶対にありません。
コードは次のとおりです:
import UIKit
@IBDesignable
class MyRoundedView: UIView {
@IBInspectable var radius: CGFloat = 8 {
didSet {
self.layer.cornerRadius = radius
}
}
override func awakeFromNib() {
self.layer.cornerRadius = self.radius
self.layer.masksToBounds = true
}
}
このクラスを使用するには、プロジェクトに追加してからIBでストーリーボードを開き、適切なサイズの通常のUIViewを作成します。それを表示できるように背景色を付け、右側のユーティリティパネルでIDインスペクタに移動し、ドロップダウンMyRoundedView
クラスタイプをMyRoundedView
ます。
これを行うと、 "Classables"と "Moduleables"の下に3番目のラベルが表示され、 "Designables"と表示され、 "Up to date"に変更する前に "Updating"と表示されます。これは、XcodeがあなたのコードをMyRoundedView
用に再コンパイルしたことを意味します。
今度はAttributes Inspectorを開き、ペインの上部にある「My Rounded View」という見出しと、「Radius」というラベルの付いた新しい属性を値8で持つ新しいセクションを(短い一時停止の後に)表示する必要があります(コードで設定した初期値です)。 @IBInspectable
とマークしたので、これはAttributes Inspectorに表示されてい@IBInspectable
。
これを別の番号に変更すると、丸みを帯びたビューのコーナー半径がリアルタイムで更新されるはずです。