以上就是对RTL,阿拉伯地区适配,适配

最近公司需求 , 海外产品需要适配RTL布局 , 伯地区右侧布局模式 。
寻找了很多方法 , 也尝试了很多种方法 , 最终有了一知半解的理解 , 应用到项目当中的时候发现会有很多问题 , 折磨了一周 , 突然发现是在项目中的一个扩展影响到了布局的改变 。
上代码:
以上就是对RTL,阿拉伯地区适配,适配
文章图片
项目截图
在这里要注意left和right
如果你是用的Auto的话你就不能用left、right了你需要改成leading 、trailing这样的话就会自动适应(我项目中用的不是Auto , 所以我没有尝试)
我项目中用的是frame的写法 , 就非常不友好了 。 需要自己处理 。
以上就是对RTL,阿拉伯地区适配,适配
文章图片
图片镜像API
我试过了很多图片不能用 , 下面来介绍黑魔法:
以上就是对RTL,阿拉伯地区适配,适配
文章图片
api
在项目中可以根据语言自动切换
接下来就是UIButton 的内边距:
以上就是对RTL,阿拉伯地区适配,适配
文章图片
hookUIButton的方法
在直播项目中聊天室公屏的适配
在聊天室公屏聊天区域展示的是用户的昵称以及发送的文字 , 表情 , 礼物等 。 具体展示如下图:
以上就是对RTL,阿拉伯地区适配,适配
文章图片
聊天室聊天区域展示的
在这个地方存在很多问题(Auto除外)图文混排我是用的YYText框架 。 正常环境下展示没有任何问题 。 当且切换语言到伯语的时候所有的布局如上图所示 。 在RTL环境中冒号和型号(*)会影响数据排列的循序 。 所以我的处理方式是把冒号和星号(*)用别的字符给替换掉 。 这里就要用到运行时:通过hookUILabel的setText方法更改所有的文字 。 如图:
以上就是对RTL,阿拉伯地区适配,适配
文章图片
hookUILabel的text方法
这样处理 , 项目中的大部分文字都可以改掉 , 对于富文本我单独处理hookUILabel的attributeText方法跟上图方法一样把setText改成setAtrributeText方法 。
对于UITableView , UICollectionView , UIScrollView就需要我们单独处理 , 通过查找文档发现 。
UITableView不用处理 , 只需要更改Cell的UI顺序即可.
UICollectionViewFlowLayout有两个代理方法需要实现:
【以上就是对RTL,阿拉伯地区适配,适配】
以上就是对RTL,阿拉伯地区适配,适配
文章图片
在collectionView实现的地方写
以上就是对RTL,阿拉伯地区适配,适配
文章图片
自定义layout里面写
对于UIScrollView我的做法是把所有的数据源翻转 , 其它的什么也不用处理 。


推荐阅读