获取UIView的可见矩形

Dia*_*rat 11 iphone uiscrollview uiview

我有一个UIScrollView包含自定义UIView.在自定义内部UIView,我想知道它可见的矩形(即没有剪裁).

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

fos*_*ock 17

这应该可以解决问题

CGRect visibleRect = CGRectIntersection(self.frame, superview.bounds);
Run Code Online (Sandbox Code Playgroud)

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

希望我能帮忙!

  • 由于超级视图的框架位于其超级视图的坐标空间中,这不应该是“superview.bounds”吗? (2认同)

Cyp*_*ian 2

如果您能提供更多关于您想要实现的目标的信息,将会有所帮助。

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

CGRect superFrame = [self superview].frame;
Run Code Online (Sandbox Code Playgroud)