获取UIView的可见矩形

时间:2010-12-07 03:24:02

标签: iphone uiview uiscrollview

我的UIScrollView包含自定义UIView。在自定义UIView内,我想知道它可见的矩形(即没有剪切)。

快速解决方案是让自定义UIView假设父级是UIScrollView并通过它获取内容大小,但我正在寻找一个不涉及make的更好的解决方案这样的假设。

3 个答案:

答案 0 :(得分:17)

这应该可以解决问题

CGRect visibleRect = CGRectIntersection(self.frame, superview.bounds);

在UIView中使用它,它应该在你的superview(UIScrollView)中获得表示该视图的可见部分的矩形(如果有的话)。我假设它们在层次结构中没有它们之间的视图,但是如果有的话,摆弄代码应该是微不足道的。

希望我能帮忙!

答案 1 :(得分:2)

如果您想提供有关您要完成的内容的更多信息,这将有所帮助。

如果您想知道超级视图的大小,可以这样做:

CGRect superFrame = [self superview].frame;

答案 2 :(得分:1)

Swift 3

extension UIView {
    var visibleRect: CGRect? {
        guard let superview = superview else { return nil }
        return frame.intersection(superview.bounds)
    }
}