ios - 有没有办法为 native IOS 应用程序创建可用的滚动条?

标签 ios xcode swift

我一直在 stackoverflow 和谷歌上四处寻找这个答案,但我似乎找不到任何可以说是或否的东西。

我有一个应用程序,在单个 View 中有大约 90,000 个单元格,可以使用滑动手势滚动浏览,但速度如您想象的那样慢。

现在,实现了一个可以快速加快搜索速度的搜索功能,但客户还想添加一个可点击的滚动条,就像您在常规网络浏览器中看到的那样。这个应用程序是在 IOS 和 Android 上制作的,Android 版本能够实现滚动条,虽然我认为没有必要有一个,客户想要什么,客户就得到(如果可能的话) .

有没有办法实现适合屏幕边缘的滚动条,可用于快速滚动数千个内容单元格?

最佳答案

我会简单地使用 UISlider 并将其旋转 90 度:

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI*0.5);
scrollSlider.transform = transform;

然后使用您自己的图像使用此功能来获得更像滚动条的外观(空图像作为背景和不同形状的拇指图像):

- setMaximumTrackImage:forState:
– setMinimumTrackImage:forState:
– setThumbImage:forState:

之后,您可以使用 slider 的值属性来调整滚动位置。

编辑:在这种情况下,您应该隐藏真正的滚动条,并在用户使用 ScrollView 时更新 slider 的值

-scrollViewDidScroll:

为了让数学更简单一些,您可以将 slider 的最小值设置为 0,将最大值设置为 scrollView.contentSize.height - scrollView.size.height。

slider.value 可以直接用作 scrollView.contentOffset。

关于ios - 有没有办法为 native IOS 应用程序创建可用的滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286403/

相关文章:

ios - 计算屏幕上字体的宽度

android - 函数 'Stream<User?>' 无法返回类型为 'user' 的值,因为它在 flutter 中的返回类型为 'Stream<User>'

ios - 自 iOS 9.0 起不再有可用位置

ios - 跨不同模拟器打印 View 的 bounds.width 属性时的常量值 od 375

ios - 使用 XMSegmentedControl 更改 TableViewCell

ios - 为什么当尝试在 Google API 中使用 iOS 的 Place Autocomplete 时,只得到 5 个结果而不是更多?

ios - CGPDFDocumentCreateWithURL 在任何 PDF 文件上返回 nil

objective-c - xcode 无法将其他项目添加到工作区

ios - 如何将函数传递给 Swift 中的另一个类

iOS 导航后退按钮