Центрируйте MPVolumeView вертикально в представлении SwiftUI

#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 удалении.