无法更改 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的框架属性,但每次尝试最终都会遇到这个错误。任何帮助将不胜感激。

据我了解:

因为topview是可选的,frame也是可选的。这意味着 frame 有可能为零。因此,您会将 CGRect 分配给 nil。这是不可能的。

这应该有效:

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

unarchiveObjectWithData returns 一个可选的 AnyObject 并且 AnyObject 本身没有框架 属性。所以你需要将 topView 转换为 UIView

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