Это мой класс AttributedLabel:
import UIKit
class AttributedLabel: UILabel {
var cornerRadius: CGFloat = 3 {
didSet {
layer.cornerRadius = cornerRadius
}
}
var borderColor: UIColor = .clear {
didSet {
layer.borderColor = borderColor.cgColor
layer.borderWidth = 1
}
}
var masksToBounds: Bool = false {
didSet {
layer.masksToBounds = masksToBounds
}
}
var borderWidth: CGFloat = 1 {
didSet {
layer.borderWidth = borderWidth
}
}
private var strikeThrough = false
private var paddingTop: CGFloat = 0
private var paddingBottom: CGFloat = 0
private var paddingLeft: CGFloat = 0
private var paddingRight: CGFloat = 0
override var text: String? {
didSet {
if strikeThrough {
attributedText = NSAttributedString(string: text ?? "", strikeThrough: true)
}
}
}
// MARK: - Initialization
convenience init(
paddingTop: CGFloat = 0,
paddingBottom: CGFloat = 0,
paddingLeft: CGFloat = 0,
paddingRight: CGFloat = 0,
strikeThrough: Bool = false
) {
self.init()
self.paddingTop = paddingTop
self.paddingBottom = paddingBottom
self.paddingLeft = paddingLeft
self.paddingRight = paddingRight
self.strikeThrough = strikeThrough
backgroundColor = .yellow
}
// MARK: - Overriden
override func drawText(in rect: CGRect) {
let insets = UIEdgeInsets(top: paddingTop, left: paddingLeft, bottom: paddingBottom, right: paddingRight)
super.drawText(in: rect.inset(by: insets))
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.height += paddingTop
contentSize.height += paddingBottom
contentSize.width += paddingLeft
contentSize.width += paddingRight
return contentSize
}
}
И вот результат:
[img]https://i.stack.imgur .com/C91gu.jpg[/img]
Первая метка обрезана. Почему? Это определяется следующим образом:
private let titleLabel: UILabel = {
let label = AttributedLabel(paddingLeft: 20, paddingRight: 20)
label.textColor = .mineShaft
label.font = UIFont.poppinsMedium.withSize(18)
label.textAlignment = .left
label.numberOfLines = 0
return label
}()
и ему назначен текст:
titleLabel.text = "Czy jesteś za wdrożeniem aplikacji PLZ?"
Не знаю, имеет ли это значение, но в UIStackView добавляется titleLabel:
contentStackView.addArrangedSubview(titleLabel)
Подробнее здесь: https://stackoverflow.com/questions/783 ... h-paddings
Неправильный встроенный размер контента для пользовательского UILabel с отступами ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Размер uilabel в Swiftui через UiviewResentable Like Text, чтобы обернуть несколько строк
Anonymous » » в форуме IOS - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-