问题描述
我使用的是快速编程语言,而我的应用程序显示的语言是RTL(波斯语)。 在我的项目中,我使用UICollectionView来水平显示一些标签(UICollectionViewCell包含UILabel)。 我想根据标签要显示的文本的大小来计算UICollectionViewCell的大小,这是我在sizeforItemAt方法中的代码:
func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeforItemAt indexPath: IndexPath) -> CGSize {
let text = arrayContainSomePersianStrings[indexPath.row]
let textSize = text.size(withAttributes: [NSAttributedString.Key.font: UIFont.somePersianFont(17)])
return CGSize(width: textSize.width + 20,height: 50)
}
并且因为我使用RTL语言显示数据,所以我将UICollectionView的方向从右向左更改(开始从右向左显示数据),这是我的代码:
collectionView.semanticContentAttribute = .forceRightToLeft
但是它不起作用(UICollectionView开始从左到右显示数据)。当我将sizeforItemAt方法更改为此时,一切正常:
func collectionView(_ collectionView: UICollectionView,sizeforItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 200,height: 50)
}
为什么会这样,以及如何解决此问题。
例如arrayContainSomePersianStrings包含:
["1","2","3","4"]
我想在UICollectionView中显示这样的数据:
["4","1"]
但是当我要计算项目大小时,UICollectionView显示此内容取决于文本大小:
["1","4"]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)