是否可以将 UIScrollView 指示器从右侧移动到左侧?

Posted

技术标签:

【中文标题】是否可以将 UIScrollView 指示器从右侧移动到左侧?【英文标题】:is it possible to move the UIScrollView indicator from the right side to the left? 【发布时间】:2012-06-15 15:06:48 【问题描述】:

我意识到我可以通过“倒置”显示滚动视图来旋转单元格并移动指示器,但这需要大量其他旋转,并处理信息以使表格正确滚动。

感谢您的时间

【问题讨论】:

这应该是系统范围的设置,以便左撇子用户在右侧有滚动条,而右撇子用户在左侧有滚动条。多年来我一直在说这个。 【参考方案1】:

其实可以通过更改scrollIndicatorInsets属性将指标限制在左侧的一小块区域:

tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0,0,0,tableView.bounds.size.width-10);

【讨论】:

很好,虽然这取决于你的常量 10 是否匹配滚动视图的宽度...从技术上讲,这是一个不安全的假设,但实际上它是可行的。 为了进一步澄清,10 应该是指标本身的宽度,而不是滚动视图。我想这就是@rickster 的意思。 其实7是指标的宽度。 你可以用 scrollIndicatorInsets 做的任何事情往往取决于滚动条指示器的大小,所以它可能和任何事情一样安全。 经过一些测量,看起来width - 8.5 是合适的数量。就我而言,我转换了滚动视图,使顶部位于底部。这样做会像往常一样将滚动条放在右侧。【参考方案2】:

我喜欢 Jeremy Jay 的解决方案(虽然我还没有测试过),但只是为了彻底探索这个想法......这是另一个可能值得尝试的方法(虽然它也未经测试):

使用两个滚动视图。

一个滚动视图(我们称其为“真实”视图)包含您的内容,但其指示器被隐藏。另一个滚动视图不包含任何内容,但将其contentSize 设置为与“真实”滚动视图的匹配。当“真实”滚动视图的 contentOffset 发生变化(通过委托消息观察到)时,更改“假”滚动视图的偏移量以匹配。 (查看 WWDC 2012 的滚动视图会话,了解更多关于使用没有内容视图的滚动视图的想法。)

理论上(同样,我还没有测试过),您现在拥有一个与原始滚动视图分开的滚动指示器视图,您可以将它放置在与原始滚动视图相关的任何位置。将它放在原件的顶部并移动/调整大小,使其在左侧占据一条窄条,并且您有一个左侧滚动指示器。 (或者,将其叠加在原件之上并使用仿射变换将其水平翻转。)将其完全放在其他地方,让您的 UI 踏上疯狂小镇之旅。 (或者不要。)但是,如果它在顶部分层,请确保它忽略触摸。

【讨论】:

【参考方案3】:

实现这一点的快速方法(如果您不使用行操作)而无需计算插入或弄乱额外的表格视图,是跨 Y 轴(翻转)转换表格视图,然后转换当你得到它们时,细胞就会回来。

tableView.transform = CGAffineTransformMakeScale(1, -1);

然后

cell.transform = CGAffineTransformMakeScale(1, -1);

【讨论】:

以上是关于是否可以将 UIScrollView 指示器从右侧移动到左侧?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 右侧的 Autolayout Pin 视图

UIScrollView - 显示滚动条

UIScrollView - 将视图移到前面,但在滚动指示器下方

我可以指示控制台应用程序将控制台开​​始位置视为右侧的一个选项卡吗?

我可以将 Bootstrap Carousel 移到右侧而不是中心吗?

在 iOS 13 中关闭 UIScrollView 指示器清理