我怎样才能找到屏幕上实际可见的显示视图内容的rect(CGRect).
myScrollView.bounds
上面的代码在没有zoom 的情况下有效,但一旦允许zoom ,它就会以除1以外的zoom 比例中断.
为了澄清,我想要一个CGRect,它包含滚动视图内容相对于内容的可见区域.(即,如果zoom 比例为2,则矩形的大小将是滚动视图大小的一半,如果zoom 比例为0.5,则矩形的大小将是滚动视图大小的两倍.)
我怎样才能找到屏幕上实际可见的显示视图内容的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 代码.