美文网首页
Semantic Content Attribute

Semantic Content Attribute

作者: 内蒙小猿 | 来源:发表于2020-12-29 15:42 被阅读0次

官方文档
官方教程

semanticContentAttribute 是可以让 UI 展示方式 由自左向右 转变为 由右向左(RTL),也是为了特定语言顺序适配

使用 semanticContentAttribute 时需要注意的,布局代码不能使用 left 和 right 而是使用 leading 和 trailing 来替代,不然无法发生镜像行为(RTL)。

UISemanticContentAttribute

unspecified: views 的默认值,使 views 可以 RTL 和 LTR 之间切换

playback:代表播放控制的view,比如 播放、回退、快进、进度条的头部按钮,当发生镜像行为时这种view 是不会翻转的

spatial:代表方向控制view,比如王者荣耀和吃鸡的拨轮,当发生镜像行为时这种view 是不会翻转的

forceLeftToRight:布局方式 强制由左向右

forceRightToLeft:布局方式 强制由右向左

使用场景

国际化

这个国际化主要针对语序是自右向左的,具体实现可以看官方教程

首先我们可以通过判断内容当前的布局方向来进一步布局

if UIView.userInterfaceLayoutDirection(for: self.semanticContentAttribute) == .rightToLeft {
    print("rightToLeft")
}else{
    print("LeftToRight")
}

这只是一个小小的开始,如果你真的要适配譬如 阿拉伯语 这样的语序,要更改的还有很多,比如 bar 上的 返回按钮、图片是否翻转、 Unicode 等等,这些都在官方教程有所涉及。

UI 讨巧

比如 UIButton 更改文字 和 图片的位置,原来都是重写坐标,现在直接更改 semanticContentAttribute 就好了, 代码如下:

tempButton.semanticContentAttribute = .forceRightToLeft
comparison.png

示例代码

获取代码,通过 set the active scheme 切换查看 RTL 效果。

Left To Right(normal)

normal.png

Right To Left(mirror)

mirror.png

相关文章

网友评论

      本文标题:Semantic Content Attribute

      本文链接:https://www.haomeiwen.com/subject/scstoktx.html