ios - 如何在 UIScrollView 的滚动指示器下方放置一个非滚动 UIView?

标签 ios uiscrollview

我有一个应用程序,我在其中使用缩放 scrollView 将图像裁剪为具有固定纵横比的矩形。我有一个 mask ,可以使要裁剪的图像部分变暗。目前我将此 subview 添加到 UIScrollView 的父级,使它们成为 sibling ,其中此掩码比 ScrollView “更高”。看起来很棒。除了...

这个掩码也屏蔽了 scrollIndicators,因此看起来有点笨。我可以关闭 scrollIndicators,或者,理想情况下,我想将这个 UIView 放在 scrollIndicators 的下面,但不会与其他内容一起滚动,如果我通过 [scrollView addSubview:我的面具 View ];

有人知道这是否可行吗?

最佳答案

首先,子类化 UIScrollView 以便您可以修改 ScrollView 的默认行为。

然后用你的图像创建一个 ImageView ,并将 ImageView 和 mask View 都放到 ScrollView 中,这样你的 View 就会位于滚动指示器的下方。

第三,在你的 ScrollView 委托(delegate)方法中viewForZoomingInScrollView: ,返回您的 ImageView ,以便只有 ImageView 缩放。请注意, ScrollView 会将内容大小调整为返回 View 的大小,但只要您的 ImageView 占据整个内容大小就可以了。

最后,覆盖 layoutSubviews 方法,将掩码 View 移动到 ScrollView 的可见边界。据说 layoutSubviews 方法在滚动的每一帧都会被调用,因此最终用户不会看到位置变化。

更多细节可以引用WWDC session 视频“Advanced ScrollView Techniques”。

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

关于ios - 如何在 UIScrollView 的滚动指示器下方放置一个非滚动 UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991649/

相关文章:

mysql - 在 iOs App 中使用 Mysql

ios - 使用自动布局禁用 UIScrollView 中的水平滚动

iphone - 如何在 iPhone 中双击放大/缩小照片 WWDC 2010 - 104 PhotoScroller

ios - swift : Process UIImage data for use in Firebase custom TFLite model

ios - 如何在激活搜索栏时显示 searchResultsTableView?

ios - 如何在 Swift 中更改 UIBarButtonItem 的文本

ios - Swift 无法识别的选择器发送到实例错误

ios - UIScrollViews 在离开 View 和返回时不同步

ios - 在 UIScrollView 中滚动期间启用 UITableView 滚动

ios - 为什么 WKWebView 在初始化时调用 scrollviewDidScroll 以及如何防止它?