无法更改UIView的框架属性

时间:2015-06-03 14:13:25

标签: ios swift uiview frame nskeyedarchiver

我有一个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的框架属性,尽管每次尝试最终都会遇到此错误。任何帮助将不胜感激。

2 个答案:

答案 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)
}