Ios setValue:forKey和struct
我有一个关于Ios setValue:forKey和struct,ios,swift,swift2,Ios,Swift,Swift2,我有一个关于UIView上的setValue:forKey方法的问题 我有以下代码: let label = UILabel() label.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10) let margins = label.valueForKey("layoutMargins") 在调试器中,边距的类型为(AnyObject?,其值为Some 如果我使用变量margins设置ui视图上的值,这将按预期工作: let label2 = UI
UIView
上的setValue:forKey
方法的问题
我有以下代码:
let label = UILabel()
label.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10)
let margins = label.valueForKey("layoutMargins")
在调试器中,边距
的类型为(AnyObject?
,其值为Some
如果我使用变量margins
设置ui视图上的值
,这将按预期工作:
let label2 = UILabel()
label2.setValue(margins, forKey: "layoutMargins")
但是如果我试图直接使用setValue:forKey
方法设置UIEdgeInsets结构,这当然不起作用,因为它需要AnyObject
而不是结构
label2.setValue(UIEdgeInsetsMake(5,5,5,5), forKey: "layoutMargins")
我是否可以将此
UIEdgeInsets
包装在某个东西中或将其强制转换为某个东西,以便能够使用该setValue
方法设置值?您需要将UIEdgeInsets
包装为NSValue
。iOS已经通过提供了必要的支持,因此解决方案应如下所示:
label2.setValue(NSValue(UIEdgeInsets: UIEdgeInsetsMake(5,5,5,5)), forKey: "layoutMargins")