Свифт, есть ли способ выровнять элементы в конце текста?

#ios #swift #xcode #swiftui

Вопрос:

У меня проблема со Swift, я не могу выровнять метку в конце заголовка, я пробовал по-разному, но безуспешно

Это результат, который я получаю, и то, что я хотел бы получить

  Label {
        
        Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Illud mihi a te nimium festinanter dictum videtur")

    } icon: {
        
            Text("  TEST  ")
                .background(Color.orange)
                .foregroundColor(.white)
        }
        
        
    } .labelStyle(RightIconLabelStyle())
 
 struct RightIconLabelStyle: LabelStyle {
    func makeBody(configuration: Configuration) -> some View {
        HStack(alignment: .lastTextBaseline) {
            configuration.title
            configuration.icon
        }
    }
} 
 

Я пробовал также использовать 2 элемента Text (), но это дает мне ошибку, у вас не может быть другого свойства цвета фона для определенного текста()

Text("This is a test title") Text ("TEST").background(Color.orange)

Есть ли какое-то решение?

Комментарии:

1. Добро пожаловать в Stack Overflow! Я не уверен, что вы пытаетесь сделать со своим кодом. А Label берет а Text и ан Image . Вы не можете подать Text(" TEST ") заявку на значок и ожидать, что он что-нибудь покажет.

2. @Yrb Спасибо, вы правы, но я не знаю, что использовать, как ни странно, он оказывает также на текст, я отправил скриншот, в основном мне нужно название и дописать в конце еще один текст с другим цветом фона, This is a title (featured) что-то вроде этого, где фигурирует должны иметь другой цвет фона, чем звание

3. Это легко решить, если бы можно было изменить цвет переднего плана вместо цвета фона.

4. @JoakimDanielson Мне нужен фон, добавление текста() Текст() Я видел, что вы можете изменить цвет переднего плана, но не фона, странно. К сожалению, мне действительно нужен фон другого цвета

5. Причина этого в том, что существует версия .foreground, которая возвращает текст, но не существует для .background

Ответ №1:

Я думаю, что ваш лучший вариант-просто сделать «Тест» AttributedString таким образом:

 struct AttributedStringView: View {
    var test: AttributedString {
        var attText = AttributedString("Test")
        attText.foregroundColor = .white
        attText.backgroundColor = .orange
                return attText
    }
    var body: some View {
        HStack {
            Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Illud mihi a te nimium festinanter dictum videtur")  
            Text(" ")  
            Text(test)
        }
    }
}
 

Комментарии:

1. Спасибо! Почти идеально, есть ли способ установить радиус угла для attText? Мне нужна форма таблетки для фона

2. @vamp: Не ждите ответа для решения другой проблемы, сначала решите исходную проблему! Если вы хотите, вы можете создать новый вопрос и для этого! Если ответ решит проблему, просто примите его.

3. @swiftPunk на исходном изображении действительно видны закругленные углы. Вампир, это не просто, но я укажу вам здесь: Фон с закругленными углами в UITextView . Это тот же самый базовый AttributedString принцип, который мы используем здесь. Возможно, вам придется открыть его в закрытом окне браузера, чтобы пройти проверку «вы достигли предела просмотра» на сайте.