Как получить доступ к рамке родителей в SwiftUI - PullRequest
1 голос
/ 01 июля 2019

Все еще работает на SwiftUI, но у меня возникла проблема.Я создал изображение с динамической рамкой, и мне нужна метка, которая должна иметь половинную ширину изображения (например, ширина изображения = 300; ширина метки 150)

В UIKit я должен написать что-то вроде этого:

Label.widthAnchor.constraint(image.widthAnchor, multiplier: 1/2).isActive = true

Я попробовал нечто подобное в SwiftUI:

Image(systemName: "j.circle.fill")
            .resizable()
            .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width)
        Text("Placeholder").frame(width: Image.frame.width/2, height: 30)

Но это не работает.

Что мне делать?

1 Ответ

1 голос
/ 01 июля 2019

Почему бы не установить жесткие размеры для обоих:

Image(systemName: "j.circle.fill")
     .resizable()
     .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width)

Text("Placeholder")
     .frame(width: UIScreen.main.bounds.width/2, height: 30)

Если вы хотите изменить весь размер компонента в одном месте, вы можете просто сделать это так:

struct MyView : View {

     private var compWidth: CGFloat { UIScreen.main.bounds.width }

     var body: some View {
         VStack {
             Image(systemName: "j.circle.fill")
                   .resizable()
                   .frame(width: compWidth, height: compWidth)

             Text("Placeholder")
                   .frame(width: compWidth/2, height: 30)
         }
     }
}

Или, для более элегантного подхода вы можете заглянуть в GeometryReader.

...