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