2015-06-03 40 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) 
}