测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2017 年 8 月 |
由 Abdullah Arif 维护。
MKKRightToLeftScrollView 在 macOS 上横向反转滚动条。这意味着垂直滚动条将出现在左侧而不是右侧。
这对于从右到左的文本非常有用,例如阿拉伯文的 NSTextView
。
在 macOS 10.12 中,水平反转滚动条是原生实现的,但需要将 [NSApp userInterfaceLayoutDirection]
设置为 NSUserInterfaceLayoutDirectionRightToLeft
,这不可通过编程控制。
换句话说,应用程序的 userInterfaceLayoutDirection
会影响应用程序中所有的 NSScrollView
,这对于大多数用例来说并不是很理想。
此外,原生实现没有正确地镜像垂直滚动条。
代码子类化了 NSScrollView
和 NSScroller
。还有一个可选的,但推荐的,私有方法 swizzling 在 NSOverlayScrollerImp
上。
macOS 10.10 中引入的 contentInsets
也得到支持。
此代码最初是为 Katib 创建的。
代码在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。
最低 macOS 10.8。虽然在 10.7 上也可能工作,但尚未进行测试。
在 Interface Builder 中,找到滚动视图,在身份检查器中将类设置为 MKKRightToLeftScrollView
。此外,将两个滚动条类都设置为 MKKRightToLeftScroller
,虽然这不是强制性的,但更高效。
默认情况下,已启用 rightToLeftLayout
。这也可以在 IB 的属性检查器中或通过编程方式修改。
要编程创建 MKKRightToLeftScrollView
,请参阅 Apple 关于此主题的指南,但将每个 NSScrollView
替换为 MKKRightToLeftScrollView
。
由于 NSScroller 的 NSScrollerImp
类中存在一些相当不幸的私有实现问题,因此重写 [NSScroller rectForPart:]
不会影响私有实现用于覆盖样式滚动条的图层矩形。
这一副作用是垂直滚动条在scrollView边缘出现偏移量超过预期,并且在尝试重新定位滚动条框架或绘图坐标时出现剪辑伪影。
我们在NSScroller+MKKRightToLeftInsets.{h|m}
中重写了[NSOverlayScroller _unsafeRectForPart:]
。如果您的应用程序因某些原因被拒绝或您不希望对私有类进行swizzle,请删除这些文件。将采取一个不是很理想的后备方案,但视觉结果应该是一样的。请查阅代码以获取详细信息。