gpt4 book ai didi

ios - NSInvalidArgumentException setSizeHasBeenSet 无法识别的选择器 - 带有属性文本

转载 作者:行者123 更新时间:2023-11-30 12:16:10 25 4
gpt4 key购买 nike

我正在尝试使用大小调整 View 在 Collection View 中创建动态单元格大小。

如果我使用文本,一切正常,但当我更改为属性文本时,一切都会崩溃并烧毁。

我有一个带有 UIlabel 的 nib 文件

let sizingView = Bundle.main.loadNibNamed("MyNib", owner: self, options: nil)?[0] as? MyCell

然后我将动态文本发送到单元格

 sizingView.configureCell(promo: promo)

在 I 类细胞

func configureCell(promo:CMSPromotion) {
if let mainAttributedString = promo.content?.htmlAttributedString() {
mainText.attributedText = mainAttributedString
}
}

我的 HTML 属性

// Convert HTML to NSAttributedString
func htmlAttributedString() -> NSMutableAttributedString? {
guard let data = self.data(using: String.Encoding.utf16, allowLossyConversion: false) else { return nil }
guard let html = try? NSMutableAttributedString(
data: data,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil) else { return nil }
return html
}

我在 Google 中能找到的对 setSizeHasBeenSet 的唯一引用是 _UIFlowLayoutItem,但我不明白为什么这是相关的。

https://github.com/JaviSoto/iOS10-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIFlowLayoutItem.h

我在以下位置看到类似的问题 UICollectionView sizeForItemAt IndexPath但经过检查,它并不重复,因为提供的代码还有其他问题。

最佳答案

我有解决问题的方法。我猜这与计算量太大有关,这就是为什么它适用于常规文本但不适用于属性文本

在加载 Collection View 之前,我预先计算后台线程中的所有单元格高度,而不是 sizeForItemAtIndexPath 中的单元格高度,我会从数组中返回预期的高度

  func collectionView(_ collectionView : UICollectionView,layout collectionViewLayout:UICollectionViewLayout,sizeForItemAtIndexPath indexPath:IndexPath) -> CGSize {

关于ios - NSInvalidArgumentException setSizeHasBeenSet 无法识别的选择器 - 带有属性文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45410589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com