Swiftui выравнивает пользовательские подвесыIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui выравнивает пользовательские подвесы

Сообщение Anonymous »

У меня есть следующий код Swiftui, где я хочу представить предварительный просмотр камеры 16: 9 в режиме ландшафта и предварительный просмотр 9:16 в портретном режиме. Я также хочу пользовательское выравнивание для подписаний следующим образом:

Предварительный просмотр камеры (прототипирован как Color.blue ) в коде ниже, чтобы быть выровненным с передовым преимуществом безопасной области (+/-, если я желаю). VSTACK/HSTACK кадра накладывания для выравнивания и совпадения с предварительным просмотром камеры. Я попытался принести размер двух представлений, используя ongeometryChange , но, кажется, получаю неправильный размер для вершины (Color.clear) Просмотр кажется. Возвращаемый размер транспонируется. < /P>
struct CameraUI: View {
@Environment(\.verticalSizeClass) var verticalSizeClass
@Environment(\.horizontalSizeClass) var horizontalSizeClass

@State var cameraViewSize:CGSize = CGSize.zero
@State var viewSize:CGSize = CGSize.zero

var body: some View {
Color.clear
.ignoresSafeArea()
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { newValue in
viewSize = newValue
}
.background {
Color.blue
.ignoresSafeArea()
.aspectRatio(verticalSizeClass == .regular ? 9.0/16.0 : 16.0/9.0, contentMode: .fit)
.offset(x:verticalSizeClass == .compact ? -(viewSize.width - cameraViewSize.width)/2 : 0)
//Need to inset with leading edge of Safe Area
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { newValue in
cameraViewSize = newValue
print("View size \(viewSize.width), Camera View size \(cameraViewSize.width)")
}
}
.persistentSystemOverlays(.hidden)
.overlay {
/* Need to have this VStack/HStack aligned with the Color.blue view */
VStack {
Spacer()
HStack {
Button("Button1") {

}

Spacer()

Button("Button2") {

}
}
}
}
}
}

#Preview {
CameraUI()
}



Подробнее здесь: https://stackoverflow.com/questions/794 ... m-subviews
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»