我的UIScrollView
包含自定义UIView
。在自定义UIView
内,我想知道它可见的矩形(即没有剪切)。
快速解决方案是让自定义UIView假设父级是UIScrollView
并通过它获取内容大小,但我正在寻找一个不涉及make的更好的解决方案这样的假设。
答案 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)
}
}