如何在UIScrollView上的滚动指示器下放置非滚动UIView?

时间:2012-04-03 10:44:30

标签: ios uiscrollview

我有一个应用程序,我正在使用缩放scrollView将图像裁剪到具有固定宽高比的矩形。我有一个面具,我会将要裁剪的图像部分变暗。目前,我将此子视图添加到UIScrollView的父级,使其成为兄弟姐妹,其中此掩码比滚动视图“更高”。看起来很棒。除了...

这个掩码也掩盖了scrollIndicators,因此看起来有点愚蠢。我可以关闭scrollIndicators,或者,理想情况下,我想把这个UIView放在scrollIndicators下面,但是不要滚动其他内容,如果我通过[scrollView addSubview将它作为scrollview的子视图会发生这种情况: myMaskView];

任何人都知道这是否可行?

1 个答案:

答案 0 :(得分:0)

首先,子类UIScrollView,以便您可以修改滚动视图的默认行为。

其次,使用您的图像创建图像视图,并将图像视图和蒙版视图都放到滚动视图中,这样您的视图将位于滚动指示器下方。

第三,在滚动视图委托方法viewForZoomingInScrollView:中,返回图像视图,以便只显示图像视图。请注意,滚动视图会将内容大小调整为返回视图的大小,但只要图像视图占用整个内容大小就可以了。

最后,覆盖layoutSubviews方法,将蒙版视图移动到滚动视图的可见边界。据说每个滚动框都会调用layoutSubviews方法,因此最终用户无法看到位置更改。

有关详细信息,请参阅WWDC会话视频“高级ScrollView技术”。

编辑:好的,刚发现您可以通过实现委托方法scrollViewDidScroll来避免覆盖layoutSubviews。