継承を必要とせずに拡張機能付きでこれを実装できますか? 私は 拡張機能が拡張機能には格納されていない可能性があります。保存されたプロパティー
extension UIButton
{
@IBInspectable var borderWidth : CGFloat
{
didSet{
layer.borderWidth = borderWidth
}
}
}
継承を必要とせずに拡張機能付きでこれを実装できますか? 私は 拡張機能が拡張機能には格納されていない可能性があります。保存されたプロパティー
extension UIButton
{
@IBInspectable var borderWidth : CGFloat
{
didSet{
layer.borderWidth = borderWidth
}
}
}
あなたがセッター/ゲッターをオーバーライドすることができますセット/レイヤーに到達します。
extension UIButton {
@IBInspectable var borderWidth : CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
}
拡張機能は、保存されたプロパティを追加することはできませんストアドプロパティを含めることはできません。このエラーが発生します。 docsから(コンピュープロパティ]セクション):
注
拡張機能は、新しい計算されたプロパティを追加することができますが、それらは保存され プロパティを追加することはできません、または既存のプロパティにプロパティオブザーバーを追加します。
あなたが格納されたプロパティの必要性を持っている場合は、サブクラスを作成する必要があり、そのように:それはちょうど前方に保存されたプロパティではありませんし、そのよう
class CustomButton : UIButton
{
@IBInspectable var borderWidth : CGFloat
{
didSet{
layer.borderWidth = borderWidth
}
}
}
私は変数を保存したくありませんインターフェイスビルダーからlayer.borderWidthを変更したい –
getter/setterの前に 'UIButton'が完全に初期化されていない可能性があります。呼び出される。 – Alexander
SwiftではObjective-Cで書かれた静的ライブラリをインポートしています。そのライブラリの下のプロトコルには、メソッドとプロパティがあります。
クラスは、そのプロトコルに準拠有するしようと@class Message;
@protocol LocalService
@property (readonly) int action;
- (Message *)getResponse:(Message *)request;
@end
、下にメッセージを配信:
1-)プロトコルに準拠していない 'ShowInitialViewLocalServiceを' タイプ「LocalServiceと
2-)拡張格納されたプロパティを含んでいない可能性があります
以下のコードでは、
import UIKit
class ShowInitialViewLocalService: NSObject{
}
extension ShowInitialViewLocalService : LocalService {
var action: Int32 {
get { return View.InitialView.rawValue }
}
func getResponse(_ request: Message) -> Message {
let response = Response(source: request.target, target: request.source, relatedView: View.InitialView.rawValue, action: request.action, data: request.data)
return response
}
}
私はこれが誰かを助けることを望みます。
この技術は動作しますが、xib /ストーリーボードのUIは更新されません。 –
設定後に 'setNeedsLayout()'を実行します。 –