Semantic Content Attribute


官方文檔
官方教程

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容