4

我写了太多这段代码:

self.frame.origin.y + self.frame.size.height 

这有捷径吗?像self.frame.y_plus_height什么?

如果有的话,我不确定在我写完整句子的所有时间里是好消息还是坏消息。

4

3 回答 3

10

这应该可以解决问题:

CGFloat res = CGRectGetMaxY(self.frame);

文档可以在这里找到。

编辑:根据 rob mayoff 的解释(见评论),这比简单地origin.y + size.height在代码中求和要贵一点。

于 2013-08-13T16:59:13.563 回答
3

nfarinaUIView创建了一个很棒的类别。

在这里查看。

使用此类别,您可以获得这样的视图的“最大 Y”或“底部”(视图在哪里self):

CGFloat maxY = self.$bottom;

这个类别真的很棒,因为它也可以让您轻松设置框架属性。例如,要将视图向右移动 3 个点,您可以这样做:

self.$x += 3.0f;
于 2013-08-13T17:06:13.477 回答
2

我意识到这是要求 Objective-C,但对于那些使用 Swift 并偶然发现这个问题的人,你可以创建一个 CGRect 扩展:

extension CGRect {   
    func maxYinParentFrame() -> CGFloat {
        return self.origin.y + self.size.height
    }
}

然后,您可以在任何地方使用它。

let mySize = myView.frame.maxYinParentFrame()
于 2015-06-23T15:45:08.473 回答