我有一个UIController,你知道UIController它与一个视图相关联,你可以使用合成的getter和setters方法访问它
UIController controller = init code ..
Run Code Online (Sandbox Code Playgroud)
..
controller.view- >这给了我UIView保留和自动释放的对象,这将是合成的get方法(如果我合成的getmethod理解是正确的)
controller.view.frame -> this gives me my CGRect struct
controller.view.frame.size -> CGSize struct
Run Code Online (Sandbox Code Playgroud)
为什么我不能直接为这个帧结构赋值
controller.view.frame.size.width = 20;
Run Code Online (Sandbox Code Playgroud)
对于上面的语句,我收到此错误"左值作为赋值的左操作数需要左值"
这是一个普通的c点运算符,我认为它应该可以工作.如果我遗漏任何东西请指教
在这种情况下使用点运算符是frame在幕后使用getter方法.由于frame属性是一个CGRect简单的C结构,因此frame返回值的副本,而不是指向该值的指针.更改它将修改您在堆栈上本地复制的CGRect,而不是视图的frame属性的CGRect.要更新实际的帧属性,您必须通过setter方法[yourView setFrame:yourNewFrame];或yourView.frame = yourNewFrame;.
| 归档时间: |
|
| 查看次数: |
8904 次 |
| 最近记录: |