dav*_*ain 3 iphone cocoa-touch uiview
假设我想暂时更改视图的框架(例如,将其向右移动10px - 可能与突出显示更改有关).
我假设伪代码会是这样的
self.someView.frame.origin.x += 10.0f;
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误
lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)
所以我做的是制作一个新的CGRect来表示框架,改变CGRect然后给视图CGRect,因为它的框架
CGRect aFrame = self.someView.frame;
aFrame.origin.x += 10.0f;
[self.someView setFrame:aFrame];
Run Code Online (Sandbox Code Playgroud)
似乎很有趣,我可以在CGRect上进行分配,但不能在视图的CGRect框架上进行分配.
那么,这是改变现有视图的框架的最佳方法吗?
并且对于奖励积分:为什么我不能直接在视图的框架属性上分配新值,为什么我必须像这样绕过灌木丛?
谢谢
并且对于奖励积分:为什么我不能直接在视图的框架属性上分配新值,为什么我必须像这样绕过灌木丛?
因为点符号在这里用于2个不同的用例:属性访问和结构成员访问.另一种写作方式
self.someView.frame.origin.x += 10.0f;
Run Code Online (Sandbox Code Playgroud)
将会
[[self someView] frame].origin.x += 10.0f;
Run Code Online (Sandbox Code Playgroud)
这条线更清楚,这是行不通的.[[self someView] frame]检索CGRect但是如果要更改此结构的成员,则不会更改frame属性本身的内容.要为frame属性指定某些内容,-setFrame:必须使用该方法.并且-setFrame总是需要一个完整CGRect的参数.
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |