【发布时间】:2014-02-14 19:58:27
【问题描述】:
在 Objective-c 中,我经常在动画期间更新我的视图帧。我目前有一个混乱的解决方案:
CGPoint newOrigin = CGPointMake(25.0, 25.0);
view.frame = CGRectMake(newOrigin.x, newOrigin.y, view.frame.size.width, view.frame.size.height);
我正在寻找的是一种简单的便捷方法,其工作原理如下:
view.frame = CGRectWithNewOrigin(view.frame, newOrigin);
SDK 中是否存在执行此操作的现有方法,或者我需要定义自己的方法吗?
已解决:0x7fffffff 有正确答案,但 JackWu 的建议是更好的方法:
Jack Wu 提供的解决方案解决了我的问题。 iOS SDK 没有执行此操作的方法,因此您需要定义自己的内联方法来执行此操作。但是,利用 UIView 的 center 属性是更好的方法。无需定义内联函数,如果视图应用了变换,它也将继续工作。
【问题讨论】:
-
为此,建议设置“center”属性而不是框架,这不会改变视图的大小
-
请注意,一旦应用了
transform,frame 属性就未定义,不应修改。虽然这对于您当前的设置可能不是问题,但按照 @JackWu 的建议操作center属性可能会让您在以后头疼。 -
谢谢大家。在大多数情况下,这确实是解决我的问题的正确方法。我会将 0x7ffffff 的答案标记为正确答案,但更新问题文本以提及调整中心更合适。我最终在我自己的项目中使用了 center 属性。谢谢@JackWu!
标签: ios objective-c cgrect