Вычисление атрибутивной высоты строкиIOS

Программируем под IOS
Ответить
Anonymous
 Вычисление атрибутивной высоты строки

Сообщение Anonymous »

Я пытаюсь установить высоту tableViewCell, равную высоте атрибутируемой строки внутри ячейки. Однако, что бы я ни делал, похоже, он не имеет правильного размера. это то, что я пробовал до сих пор

cellHeight

//Convert description to NSAttributedString and get height
//width is equal to screen width - right and left offset
//at the end add the bottom and height offset to the cell height
return detailPetViewModel!.description
.lineSpacing(spacing: 4)
.heightWithConstrainedWidth(width: Sizes.screenWidth - 40) + 10


Настроить descLabel в подклассе ячеек

//Customize descLabel
descLabel.font = FontFamily.Avenir.Regular.font(size: 16)
descLabel.textColor = UIColor(named: .SecondaryTextColor)

//Multiple lines
descLabel.numberOfLines = 0
descLabel.lineBreakMode = .byWordWrapping
descLabel.sizeToFit()


расширение межстрочного интервала

extension String {
func lineSpacing(spacing: CGFloat) -> NSAttributedString {

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = spacing

let attributedString = NSMutableAttributedString(string: self)
attributedString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))
return attributedString
}
}


Увеличение высоты

extension NSAttributedString {
func heightWithConstrainedWidth(width: CGFloat) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, context: nil)

return boundingBox.height
}

}


Подробнее здесь: https://stackoverflow.com/questions/417 ... ing-height
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»