簡體   English   中英

無法更改UIView的框架屬性

[英]Cannot change the frame properties of a 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的幀屬性,盡管每次嘗試最終都會遇到此錯誤。 任何幫助將不勝感激。

unarchiveObjectWithData返回一個可選的AnyObject,而AnyObject本身不具有frame屬性。 所以你需要將topView轉換為UIView

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

據我了解:

因為topview是可選的,所以frame也是可選的。 這意味着該幀可能為零。 因此,您需要將CGRect分配給nil 這是不可能的。

這應該工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM