j2e*_*nue 12 xcode user-defined-fields interface-builder ios
我继承了一个项目,我对某个键是什么感到困惑.我的问题是,styleName键路径是什么?它是视图的属性吗?我怎样才能找到可用的关键路径?
例如,在我从故事板中选择UILabel后,我检查身份检查器,并在用户定义的运行时属性中,我看到以下内容:

我试过打开main-styles.plist文件但不确定它是如何链接在一起的.
当我点击属性检查器(同时仍然保持故事板中的UILabel突出显示)时,它是这样的:

nhg*_*rif 23
有一个NSKeyValueCoding协议,其中许多对象UIKit符合.
其中一种方法NSKeyValueCoding是valueForKey:(和许多其他相关方法,检查我链接的文档).
通过调用valueForKey:对象,我们可以在运行时访问在接口构建器上设置的属性.
所以,例如,在这个标签上,我可能会这样做:
Objective-C的:
NSString *style = [myLabel valueForKey:@"styleName"];
Run Code Online (Sandbox Code Playgroud)
迅速:
let style = myLabel.valueForKey("styleName")
Run Code Online (Sandbox Code Playgroud)
现在我可以通过Interface Builder获取设置值,在运行时,我可以根据此处设置的值对标签执行某些操作.例如,在这里,我可能会使用特定的"样式名称"以特定方式设计标签.
如果你在项目中搜索valueForKey或者"styleName",你可能会发现这个属性的使用位置以及它正在做什么.
为了跟进我关于属性检查器的问题,从Xcode 6开始,我们可以使用该@IBInspectable属性创建将在Attributes Inspector中显示的属性(如此处所示).考虑这个UIView扩展:
extension UIView {
@IBInspectable var borderColor : UIColor? {
set (newValue) {
self.layer.borderColor = (newValue ?? UIColor.clearColor()).CGColor
}
get {
return UIColor(CGColor: self.layer.borderColor)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我们UIView在故事板中查看属性检查器中的任何(或子类),我们将看到:

我们现在通过属性检查器提供"边框颜色"属性,该属性通常不存在.我指出这个工具的原因是因为每当你通过Attributes Inspector设置其中一个属性时,你设置的值实际上存储为这些"用户定义的运行时属性"之一:

每当从我的应用程序中的XIB加载此视图时,首先发生的事情之一就是我的borderColor属性将设置为我在Interface Builder中选择的这种红色.
下面是可用属性类型和相应属性类型的列表。
Boolean – BOOL (true/false)
Number – NSNumber * or any numeric scalar, e.g. NSInteger
String – NSString
Point – CGPoint
Size – CGSize
Rect – CGRect
Range – NSRange
Color – UIColor
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19279 次 |
| 最近记录: |