Pau*_*son 4 cocoa interface-builder nslayoutconstraint
我想identifier在接口构建器中为我的一些约束设置属性.我User Defined Runtime Attributes之前在NSView实例中使用了IB中的表,并且没有遇到任何问题,但我无法使用约束类完成相同的操作.当我尝试在代码中访问标识符时,它只返回null,而不是我输入表的Value列的字符串.我想这可能与xib加载机制有关,但我希望有人能够肯定地说出问题是什么.
IB --> Identity Inspector --> User Defined Runtime Attributes:
稍后在一个IBAction方法中:
NSLog(@"%@", self.widthCon.identifier);
// --> (null)
Run Code Online (Sandbox Code Playgroud)
NSLayoutConstraint实现似乎存在一些基本错误.在NSLayoutConstraint上创建一个类别并覆盖一些方法以进行调试,揭示了以下内容:
在编译期间,Xcode必须剥离运行时属性,原因如下:
被覆盖的KVC方法NSLayoutCategory内setValue:forKey:,setValue:forKeyPath:并且setValue:undefinedKey:永远不会获取调用.
setIdentifier:调用覆盖的方法,但永远不会从运行时属性部分接收传递的值
提供无效密钥不会像在任何其他对象上那样创建错误,例如NSView:
2014-03-19 08:25:52.806 LayoutTestApp [13733:303] [setValue:forUndefinedKey:]:此类不是密钥testKey的密钥值编码兼容.
此外,在Xcode上也可以优雅地忽略在NSLayoutConstraint上设置自定义类(自定义类的init方法永远不会被调用).看起来Apple禁用了NSLayoutConstraints的运行时属性和自定义类功能,或者它只是一个错误.无论哪种方式:通过运行时属性设置标识符很可能不会起作用.
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |