Добавить отступы к цвету фона текста

Я хочу, чтобы текст отображался «выделенным», а не все текстовое поле. Я бы хотел, чтобы каждая строка была выделена индивидуально. Я не нашел лучшего способа сделать это. Единственное, что я могу придумать, это использовать тот же текст из моей переменной, присвоив ему цвет фона, опустить шрифт до места, где он образует пробел, и сделать цвет текста четким... если это имеет смысл. Вот чего я хочу. Я использую SwiftUI. Любая помощь приветствуется.

Что важно, это то, что я использую для выравнивания текста.

struct LabelAlignment: UIViewRepresentable {
    var text: String
    var textAlignmentStyle : TextAlignmentStyle
    var width: CGFloat
    var fontName: String
    var fontSize: CGFloat
    var fontColor: UIColor

    func makeUIView(context: Context) -> UILabel {
        let font = UIFont(name: fontName, size: fontSize)
        let label = UILabel()
        label.textAlignment = NSTextAlignment(rawValue: textAlignmentStyle.rawValue)!
        label.numberOfLines = 0
        label.preferredMaxLayoutWidth = width
        label.font = font
        label.setContentHuggingPriority(.required, for: .horizontal)
        label.setContentHuggingPriority(.required, for: .vertical)
        label.textColor = fontColor

        return label
    }

    func updateUIView(_ uiView: UILabel, context: Context) {
        uiView.text = text
    }
}

enum TextAlignmentStyle : Int{
     case left = 0 ,center = 1 , right = 2 ,justified = 3 ,natural = 4
}

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Приписанный текст с межстрочным интервалом и цветом фона

func updateUIView(_ uiView: UILabel, context: Context) {
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = 15
    paragraphStyle.alignment = NSTextAlignment(rawValue: textAlignmentStyle.rawValue)!
    let attributedText = NSAttributedString(
        string: "This is a quote from my favorite book. I will put many more of these quotes on this list. Enjoy for now thank you",
        attributes: [
            .backgroundColor: UIColor.yellow,
            .paragraphStyle: paragraphStyle,
        ])
    uiView.attributedText = attributedText
}

Очень близко! У меня было что-то подобное, однако в результате мой стиль выравнивания текста по ширине был удален. Есть предположения?

za.ch 02.05.2024 17:49

@za.ch, пожалуйста, добавьте это для выравнивания. абзацStyle.alignment = NSTextAlignment(rawValue: textAlignmentStyle.rawValue)!

Immanuel 03.05.2024 07:10

Вернусь, чтобы сказать спасибо!! Работал отлично.

za.ch 14.05.2024 18:31

Другие вопросы по теме