Как создать простой вид в swiftUI - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь создать простой вид с цветом фона в SwiftUI . Но все, что я могу найти, это элементы, которые не являются простыми представлениями, такие как текст, кнопка, изображение, список и т. Д.

Когда я пытаюсь использовать View, отображаются следующие сообщения об ошибках:

  • «Представление» не может быть построено, потому что у него нет доступных инициализаторов
  • Протокол «Просмотр» можно использовать только в качестве общего ограничения, поскольку он имеет требования Self или relatedType

Как создать прямоугольный вид с цветом фона?

Ответы [ 4 ]

5 голосов
/ 07 июня 2019

Просто используйте Rectangle()

Как документация гласит:

Прямоугольная фигура, выровненная внутри рамки вида, содержащего ее.

Вот пример прямоугольника с фиксированным размером и цветом фона

Rectangle()
    .size(CGSize(width: 10, height: 10))
    .foregroundColor(.red)
1 голос
/ 11 июня 2019

На всякий случай, если ваш вариант использования похож на создание фона для представления TextField, вот демонстрация того, как я это сделал

В приведенном здесь примере мы создадим небольшое представление с непрозрачным вторичным фоном, а затем отобразимповерх него метка, обозначающая пользователя для ввода местоположения, другого белого прямоугольника с закругленными углами и внутри белого прямоугольника TextField ().

struct InputView : View {
    @State var text:          String

    var body: some View {
        ZStack{
            RoundedRectangle(cornerRadius: 15).frame(width: 310, height: 100)
                .foregroundColor(.secondary)
                .offset(y: -20)
            ZStack{
                RoundedRectangle(cornerRadius: 30).frame(width: 290, height: 40)
                    .foregroundColor(.white)
                TextField($text, placeholder: Text("City, State, Address")) {
                        print(self.text)
                        self.didEnter.toggle()
                    }
                        .frame(width: 220, height: 40, alignment: .leading)
                        .offset(x: -20)
                Text("Select Location:").bold().fontWeight(.medium)
                    .offset(y: -40)
                    .foregroundColor(.white)
            }
        }
    }
}
0 голосов
/ 05 июля 2019

Это еще один способ создать что-то вроде UIView .В SwiftUI каждый примитивный вид работает как UIView.

struct CustomView : View {

    var body: some View {
        ZStack{
            Color.red.frame(width: 300, height: 300)
            Text("This is view")
        }
    }
}
0 голосов
/ 08 июня 2019

Как предлагается в другом ответе, вы можете использовать Shape как Rectangle() и установить его size и foregroundColor:

Rectangle()
    .size(CGSize(width: 10, height: 10))
    .foregroundColor(.blue)

Но я думаю, что использование Color напрямую проще:

Color.blue
    .frame(width: 10, height: 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...