web-dev-qa-db-ja.com

ドロップダウンとより良い組織を作成するIBInspectable

要するに、@IBInspectableプロパティを使用すると、ストーリーボードでドロップダウンメニューの項目のリストから選択できます。また、仕切りを作成してIBInspectablesをよりよく整理する方法がある場合も、これが可能かどうかを知りたいです。私の例では、電話番号の正規表現文字列を作成して、ストーリーボードに移動したときに、正規表現を入力する代わりに、ドロップダウンメニューで "phone number"項目を選択できるようにします。ストリング。

現在、私はTextFieldをサブクラス化しているので、正規表現のようにIBInspectablesをさらに追加することができます(画像で確認できます)。つまり、これが私のサブクラスUITextFieldにあるものです。

@IBDesignable public class FRM_TextField: UITextField {


@IBInspectable public var regex : String?

public var isValid : Bool{
    if let unwrappedRegex = regex{
        let applied_regex_expression = NSRegularExpression.regularExpressionWithPattern(unwrappedRegex, options: nil, error: nil)

        let numberOfMatches = applied_regex_expression?.numberOfMatchesInString(text, options: nil, range: NSMakeRange(0, countElements(text)))


        if(numberOfMatches > 0 ){
                return true
        }else{
                return false
        }
    }
    return false
}

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

  public override init(){
     super.init();
}

  public override init(frame: CGRect) {
     super.init(frame: frame)
  }   
}

Regex Toolbar

32

リストや配列はまだサポートされていません。

現在、次のタイプが@IBInspectableをサポートしています

  • Int
  • CGFloat
  • ダブル
  • ストリング
  • ブール
  • CGPoint
  • CGSize
  • CGRect
  • UIColor
  • UIImage

以下は、使用可能なすべてのIBInspectableを含むコードです。

    @IBInspectable var integer: NSInteger = 10
    @IBInspectable var float: CGFloat = 10
    @IBInspectable var double: Double = 10
    @IBInspectable var string: String = "string"
    @IBInspectable var bool: Bool = true
    @IBInspectable var point: CGPoint = CGPointMake(1, 0)
    @IBInspectable var rect: CGRect = CGRectMake(0, 0, 100, 100)
    @IBInspectable var color: UIColor = UIColor.redColor()
    @IBInspectable var size: CGSize = CGSizeMake(100, 100)
    @IBInspectable var image: UIImage = UIImage(named: "Logo")!

そして、それはこのようにIBで見えます:

enter image description here

12
skywinder

組織に関する限り、プロパティに同じプレフィックスを付けるようにプロパティに名前を付けることで、仕切りを使用して構成できます。

@IBInspectable var ValText : Bool! = false
@IBInspectable var ValEmail : Bool! = false
@IBInspectable var ValCreditCard : Bool! = false
@IBInspectable var Positives : Bool! = false
@IBInspectable var Money : Bool! = false
@IBInspectable var Phone : Bool! = false
@IBInspectable var ZipCode : Bool! = false
@IBInspectable var Street : Bool! = false
@IBInspectable var IPAddress : Bool! = false
@IBInspectable var MAC : Bool! = false
@IBInspectable var AlphaNum : Bool! = false
@IBInspectable var AlphaNumSpaces : Bool! = false
@IBInspectable var AlphaNumNoSpaces : Bool! = false
@IBInspectable var URL : Bool! = false
@IBInspectable var ValidationType : String! = ""

としてレンダリング

IB

12
Andrew Gene

ストーリーボードにいるときに、ドロップダウンメニューの項目のリストから選択できる@IBInspectableプロパティを作成します。

私の知る限り、リスト(配列)はまだサポートされていません。これまでにサポートされているタイプは次のとおりです。

  • Int
  • CGFloat
  • Double
  • String
  • Bool
  • CGPoint
  • CGSize
  • CGRect
  • UIColor
  • UIImage

また、仕切りを作成してIBInspectableをより適切に編成する方法がある場合。

そんなことはあり得ないと思います。しかし、多分誰かが回避策を持っています。

WWDCセッション411-インターフェースビルダーの新機能 をご覧になることをお勧めします。

7
Rafael Machado