У меня есть UITableView с ячейками, которые содержат UILabel. UILabel имеет пользовательский интерфейс UIEdgeInset. Я подклассы в UILabel и установить UIEdgeInsets как это:UILabel с пользовательскими UIEdgeInsets, усекающимися в UITableViewCell
override func drawText(in rect: CGRect) {
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.width += leftInset + rightInset
contentSize.height += topInset + bottomInset
return contentSize
}
Но метка получает усечен иногда, когда у меня есть несколько строк в UILabel. Я уже настроил высоту строки до UITableViewAutomaticDimension и установил значение RowHeight. Также ограничения прекрасны. Проблема заключается в том, что я устанавливаю UIEdgeInsets, так как он отлично работает, если я не настраиваю его.
Возможно, я должен сказать ячейке, чтобы обновить ограничения после установки вставки, но я не мог этого сделать до сих пор.
Ограничения, добавленные в раскадровку. Bottom
, Top
, Leading
и Trailing
связаны с надписью (UITableViewCell). Все константы устанавливается в 0.
В cellForRowAtIndexPath
код выглядит следующим образом:
let cell = tableView.dequeueReusableCell(withIdentifier: "AnswersCell", for: indexPath) as! AnswerCell
cell.answerLabel.text = alternatives[indexPath.row]
return cell
Лукаса вы, что метка только получает усечена, когда у вас есть более одной строки в метке? Посредством усечения я предполагаю, что вы имеете в виду разрезание по горизонтали делителем ячейки - то есть ячейка не будет правильно расширяться, чтобы разместить дополнительную строку в метке. Это верно? –
Ваш подкласс подкласса ведет себя правильно для меня с помощью ячеек таблицы размеров, чтобы вы могли использовать код, который вы используете для настройки ячеек таблицы и подсмотров. – jamesk
@ thecloud_of_unknowing yes, строка не подходит для представления. Это происходит не всегда, когда у меня есть несколько строк. Похоже, что он не рассматривает новые UIEdgeInsets, которые я установил. Таким образом, в некоторых случаях он подходит отлично, но другой может быть усечен, поскольку он ожидает, что останется больше пространства ширины. –