我怎样才能找到屏幕上实际可见的显示视图内容的rect(CGRect).

myScrollView.bounds

上面的代码在没有zoom 的情况下有效,但一旦允许zoom ,它就会以除1以外的zoom 比例中断.

为了澄清,我想要一个CGRect,它包含滚动视图内容相对于内容的可见区域.(即,如果zoom 比例为2,则矩形的大小将是滚动视图大小的一半,如果zoom 比例为0.5,则矩形的大小将是滚动视图大小的两倍.)

推荐答案

回答我自己的问题,主要是因为Jim Dovey的回答,这并没有起到很好的作用,但为我的回答提供了基础:

CGRect visibleRect;
visibleRect.origin = scrollView.contentOffset;
visibleRect.size = scrollView.bounds.size;

float theScale = 1.0 / scale;
visibleRect.origin.x *= theScale;
visibleRect.origin.y *= theScale;
visibleRect.size.width *= theScale;
visibleRect.size.height *= theScale;

主要区别在于visibleRect的大小应该是scrollView.bounds.size,而不是内容视图的大小scrollView.contentSize.还简化了一点数学,并没有看到isless()的用途,它会在更大的时候 destruct 代码.

Objective-c相关问答推荐

我在哪里可以找到 info.plist 文件?

UICollectionView:一行或一列

UIAlertView 按钮操作

可供学习的 iOS 示例项目

具有自定义视图的相机

将类作为参数传递?

仅替换 NSString 中子字符串的第一个实例

我应该在 ARC 的 init 方法中引用 self.property 吗?

如何编写 OS X Finder 插件

在 Objective C 中使用 extern

如何制作真正的私有实例变量?

我可以在 Objective-C switch 语句中声明变量吗?

Highlighted 和 Selected UIButton 的 State 有什么区别?

导航返回时重新加载 UITableView?

为整个 iPhone / iPad 应用程序设置背景图像

使 UILabel 的文本加粗

所有异常断点在模拟器上无缘无故停止

UITableView,我如何知道 cellForRowAtIndexPath 期间的哪个部分?

CMTime 秒输出

如何在 Objective-C 中创建可变参数方法