2016-03-31 6 views

答えて

32

あなたがセッター/ゲッターをオーバーライドすることができますセット/レイヤーに到達します。

extension UIButton { 
    @IBInspectable var borderWidth : CGFloat { 
     set { 
      layer.borderWidth = newValue 
     } 

     get { 
      return layer.borderWidth 
     } 
    } 
} 
+1

この技術は動作しますが、xib /ストーリーボードのUIは更新されません。 –

+0

設定後に 'setNeedsLayout()'を実行します。 –

7

拡張機能は、保存されたプロパティを追加することはできませんストアドプロパティを含めることはできません。このエラーが発生します。 docsから(コンピュープロパティ]セクション):

拡張機能は、新しい計算されたプロパティを追加することができますが、それらは保存され プロパティを追加することはできません、または既存のプロパティにプロパティオブザーバーを追加します。

あなたが格納されたプロパティの必要性を持っている場合は、サブクラスを作成する必要があり、そのように:それはちょうど前方に保存されたプロパティではありませんし、そのよう

class CustomButton : UIButton 
{ 
    @IBInspectable var borderWidth : CGFloat 
     { 
     didSet{ 
      layer.borderWidth = borderWidth 
     } 
    } 

} 
+0

私は変数を保存したくありませんインターフェイスビルダーからlayer.borderWidthを変更したい –

+0

getter/setterの前に 'UIButton'が完全に初期化されていない可能性があります。呼び出される。 – Alexander

1

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 
    } 
} 

私はこれが誰かを助けることを望みます。

関連する問題