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

And*_*rew 2 iphone objective-c

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

CGRectMake(currentobject.frame.origin.x+2, currentObject.frame.origin.y, currentObject.frame.size.width, currentObject.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*man 10

你应该使用CGRectOffset():

NSAssert(currentObject, @"%s: Must have |currentObject|.", __func__);
CGRect offsetFrame = CGRectOffset([currentObject frame], 2/*dx*/, 0/*dy*/);
[currentObject setFrame:offsetFrame];
Run Code Online (Sandbox Code Playgroud)

请注意断言:具有struct返回值的方法是发送消息的少数情况之一,nil可以返回垃圾而不是等效于零(0,0.0 nil,... Nil,&c.).

相当于CGRectOffset()增长或缩小框架(改变尺寸)是CGRectInset().

使用CGRectOffset()时的另一种选择UIView是取代视图的中心:

view.center.x += 2;
Run Code Online (Sandbox Code Playgroud)

这会相应地更新帧.