2015-06-03 81 views
0

我有一个UIView无法更改一个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

unarchiveObjectWithData返回可选AnyObject和AnyObject本身并不具有frame属性。所以你需要将topView投射到UIView

var topview = NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self.myView)) as? UIView 
+0

非常感谢。我是Swift新手,在编程的早期阶段,我很怀念其他人可能会遇到的问题。随着时间的推移,我会得到它。再次感谢。 – dyllandry

0

在我的理解:

因为topview是可选的,框架也是可选的。这意味着帧有可能是零。那么你可以分配CGRectnil。这是不可能的。

这应该工作:

if let view = topview as? UIView { 
    view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 1.5) 
}