有没有更简洁的方法来编辑UIView框架的4个CGRect值中的1个?

时间:2013-12-28 15:59:01

标签: ios objective-c cocoa-touch

通常当我想将标签移动到右侧20px或仅增加视图宽度时,我会通过以下途径之一

label.frame = CGRectMake(label.frame.origin.x+20, label.frame.origin.y, label.frame.size.width, label.frame.size.height);

CGRect viewFrame = view.frame;
viewFrame.x += 20;
view.frame = viewFrame;

我并不特别喜欢任何变体的代码量,并且希望你们知道我没有发现的捷径

3 个答案:

答案 0 :(得分:17)

向右移动的更好方法是CGRectOffset宏:

label.frame = CGRectOffset(label.frame, 20.0f, 0.0f);

我发现这更清楚地表达了我的代码的意图。

答案 1 :(得分:2)

添加:

Here's一篇包含精彩CGRect技巧的文章(收缩,扩展,边缘插入,相交)

答案 2 :(得分:0)

我尽可能使用center来修改原点:

myView.center = CGPointMake(150, 150);

甚至更好:

myView.center = anotherView.center;

修改尺寸framebounds是唯一的方法。您可以使用CGGeometry中的各种CGRect函数来表达更高级别的转换。