我发现自己做了很多这样的事情:
webView.frame = CGRectMake(webView.frame.origin.x, otherView.frame.origin.y + otherView.frame.size.height + 10, webView.frame.size.width, webView.frame.size.height);
显然很多代码都会重复出现。我只是将元素向下移动,但我必须创建一个新的CGRect,因为我无法直接访问属性。
是否有一种更简单的方法可以在运行时移动元素而我错过了?
答案 0 :(得分:4)
不是一种完全不同的方式,但如果你问我就更舒服:
CGRect newRect = webView.frame; newRect.origin.y = otherView.frame.size.height+10; webView.frame = newRect;
我发现这也更具可读性。在这个特殊的例子中,它减少了大约40%的字符! :P
答案 1 :(得分:2)
view.frame = CGRectOffset(view.frame, 5, 10);
答案 2 :(得分:1)
CGRectOffset会帮忙吗?
答案 3 :(得分:0)
@wasabii在减少代码量方面有正确答案,但另一种方法是在UIView上创建一个类别。以下是有关类别的一些文档:http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Category.html
基本上,类别允许您向无法控制的类(甚至是您控制的类)添加功能。
Xcode 4.2提供了一个用于在新文件对话框下创建类别的模板,如果可以,请使用它。
在这种情况下,您可以使用名为
的方法在UIView上创建一个类别-(void)moveDownByIncrement:(float)increment
然后按照你喜欢的方式实现移动代码(但实际上是使用@ wasabii的方法)。
有关类别的一些注意事项: