35

简而言之,我想创建一个@IBInspectable属性,当您在 Storyboards 中时,该属性允许您从下拉菜单中的列表中进行选择。此外,如果有一种方法可以创建分隔线并更好地组织,IBInspectables我想知道这是否也是可能的。在我的示例中,我想为电话号码创建正则表达式字符串,这样当我转到情节提要时,我可以在下拉菜单中选择“电话号码”项,而不是输入正则表达式字符串。

目前我已经对 a 进行了子类化,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)
  }   
}

正则表达式工具栏

4

3 回答 3

14

尚不支持任何列表或数组。

目前支持以下类型@IBInspectable

  • 诠释
  • CGF浮动
  • 双倍的
  • 细绳
  • 布尔
  • CG点
  • CGS尺寸
  • CG矩形
  • 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 中看起来像这样:

在此处输入图像描述

于 2015-06-03T08:24:25.683 回答
12

至于组织,您可以通过命名属性来使用分隔符来组织它,以便它们具有相同的前缀。

@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! = ""

呈现为

国际文凭组织

于 2016-08-09T16:15:39.670 回答
9

我想创建一个@IBInspectable属性,当您在 Storyboards 中时,该属性允许您从下拉菜单中的列表中进行选择。

据我所知,尚不支持列表(数组)。目前支持的类型有:

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

此外,如果有一种方法可以创建分隔线并更好地组织 IBInspectables。

我不认为这样的事情是可能的。但也许有人有解决方法。

我建议您观看WWDC Session 411 - What's New in Interface Builder

于 2015-05-10T12:14:54.123 回答