我有一个包含自定义 UIView
的 UIScrollView
。在自定义的 UIView
内部,我想知道它可见的矩形(即未被裁剪的部分)。
快速且不太优雅的解决方案是让自定义视图假定其父视图是 UIScrollView
,并通过它获取内容大小,但我正在寻找一种更好的解决方案,不涉及这样的假设。
我有一个包含自定义 UIView
的 UIScrollView
。在自定义的 UIView
内部,我想知道它可见的矩形(即未被裁剪的部分)。
快速且不太优雅的解决方案是让自定义视图假定其父视图是 UIScrollView
,并通过它获取内容大小,但我正在寻找一种更好的解决方案,不涉及这样的假设。
这样应该就行了
CGRect visibleRect = CGRectIntersection(self.frame, superview.bounds);
在UIView中使用它,这将为您提供代表该视图在其父视图(UIScrollView)中可见部分的矩形(如果有的话)。 我假设这里它们之间没有视图,但是如果有,调整代码应该很容易。
希望我能帮到您!
希望您能提供更多信息,说明您试图完成的目标。
如果您想要知道超级视图的大小,您可以这样做:
CGRect superFrame = [self superview].frame;
Swift 3
extension UIView {
var visibleRect: CGRect? {
guard let superview = superview else { return nil }
return frame.intersection(superview.bounds)
}
}
superview.bounds
吗?因为 superview 的 frame 是在它的 superview 的坐标空间中。 - Awesome-o