是否可以将 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 - 将视图移到前面,但在滚动指示器下方
我可以指示控制台应用程序将控制台开始位置视为右侧的一个选项卡吗?