CGRectMake(currentobject.frame.origin.x,currentObject.fram ..更快的方式?

时间:2011-05-29 15:10:39

标签: iphone objective-c

很多时候,我会想要将一个物体移动2点,所以我会说:

CGRectMake(currentobject.frame.origin.x+2, currentObject.frame.origin.y, currentObject.frame.size.width, currentObject.frame.size.height);

有没有更快的方法,我可以改变1件事,或者我可以快速参考当前值?

2 个答案:

答案 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 };