很多时候,我会想要将一个物体移动2点,所以我会说:
CGRectMake(currentobject.frame.origin.x+2, currentObject.frame.origin.y, currentObject.frame.size.width, currentObject.frame.size.height);
有没有更快的方法,我可以改变1件事,或者我可以快速参考当前值?
答案 0 :(得分:10)
您应该使用CGRectOffset()
:
NSAssert(currentObject, @"%s: Must have |currentObject|.", __func__);
CGRect offsetFrame = CGRectOffset([currentObject frame], 2/*dx*/, 0/*dy*/);
[currentObject setFrame:offsetFrame];
注意断言:具有结构返回值的方法是向nil
发送消息可以返回垃圾而不是等效于零(0,0.0,nil
的少数情况之一, Nil
,& c。)。
用于增长或缩小框架(更改尺寸)的等效CGRectOffset()
为CGRectInset()
。
在使用CGRectOffset()
时使用UIView
的替代方法是取代视图的中心:
view.center.x += 2;
相应地更新框架。
答案 1 :(得分:1)
无论
CGRect frame = currentObject.frame;
frame.origin.x += 2;
currentObject.frame = frame;
或
CGRect frame = (CGRect){ currentobject.frame.origin.x + 2, currentObject.frame.origin.y, currentObject.frame.size };