我是uiscrollview的子类,在layoutSubviews方法中我有以下
let v = self.delegate?.viewForZoomingInScrollView!(self)
let f = v?.frame
if f != nil {
f!.origin.x = 100
}
我收到错误:
Cannot assign to the result of this expression
就行了
f!.origin.x = 100
我哪里出错
答案 0 :(得分:3)
f
被声明为不可变变量。在声明初始分配后,不可更改不可变变量。
let variable_name = 10
variable_name = 11 // Cannot assign to let value 'v'
let
关键字用于声明不可变变量
var
关键字用于声明可变变量。
var variable_name = 10
variable_name = 14 // Can be changed
将代码更改为var f = v?.frame
。
此外,如果您尝试修改视图的框架,它仅在您直接分配给view?.frame.origin.x = 100
时才有效,因为上述代码只会在f
中创建框架的副本。
答案 1 :(得分:1)
因为f
被声明为let
且不可变。