#swiftui #uikit #uiviewrepresentable
Вопрос:
Я хочу разместить MPVolumeView
в своем представлении SwiftUI, но оно не ведет себя как обычное представление SwiftUI. Я хочу, чтобы ползунок громкости располагался по центру вертикально между двумя разделителями. Если VolumeSlider
бы вы заменили Text
его, он был бы центрирован. Как я могу заставить VolumeSlider
их вести себя таким же образом?
// Must be run on real device, not simulator import SwiftUI import MediaPlayer struct ContentView: View { var body: some View { VStack { Divider() VolumeSlider() .frame(height: 128) Divider() } } } struct VolumeSlider: UIViewRepresentable { func makeUIView(context: Context) -gt; MPVolumeView { MPVolumeView(frame: .zero) } func updateUIView(_ view: MPVolumeView, context: Context) {} }
Ответ №1:
Во-первых, такое поведение на самом деле нормально для представления SwiftUI. Вы указываете высоту точки для VolumeSlider
. Если вы уменьшите 128, у него не будет места между ползунком и нижним разделителем.
struct ContentView: View { var body: some View { VStack { Divider() VolumeSlider() .frame(height: 50) Divider() } } }
Я обновлю этот ответ, чтобы попытаться сделать так, чтобы он не занимал все пространство при .frame
удалении.