如何解决为什么动态计算UICollectionView的项目大小后,从右向左滚动不起作用?
我使用的是快速编程语言,而我的应用程序显示的语言是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 举报,一经查实,本站将立刻删除。