我有一个UIView
@IBOutlet weak var myView: UIView!
我使用NSArchiver复制它
var topview = NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self.myView));
我尝试使用CGRectMake
更改它topview?.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 1.5)
响应上面'='的行,我收到错误
Cannot assign to result of this expression
我尝试了多种方法来改变topview的框架属性,尽管每次尝试最终都会遇到此错误。任何帮助将不胜感激。
答案 0 :(得分:2)
unarchiveObjectWithData
返回一个可选的AnyObject,而AnyObject本身没有frame属性。所以你需要将topView强制转换为UIView
var topview = NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self.myView)) as? UIView
答案 1 :(得分:0)
根据我的理解:
因为topview
是可选的,所以框架也是可选的。这意味着框架有可能是零。那么您将CGRect
分配给nil
。这是不可能的。
这应该有效:
if let view = topview as? UIView {
view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 1.5)
}