这是改变现有视图的UIView框架的最佳方法吗?

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框架上进行分配.

那么,这是改变现有视图的框架的最佳方法吗?

并且对于奖励积分:为什么我不能直接在视图的框架属性上分配新值,为什么我必须像这样绕过灌木丛?

谢谢

Ole*_*ann 5

并且对于奖励积分:为什么我不能直接在视图的框架属性上分配新值,为什么我必须像这样绕过灌木丛?

因为点符号在这里用于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的参数.