Ориентация устройства Swift обновляется неправильноIOS

Программируем под IOS
Ответить
Anonymous
 Ориентация устройства Swift обновляется неправильно

Сообщение Anonymous »

Я хочу определить ориентацию устройства в Swift, чтобы можно было применить правильную ориентацию к видео. Код, который у меня есть для обновления ориентации устройства, работает правильно, но чрезвычайно чувствителен к малейшим движениям. Если держать устройство вверх и слегка наклонить его, ориентация устройства изменится на альбомную, хотя телефон по-прежнему остается книжной. Есть ли способ снизить чувствительность ориентации устройства, чтобы малейшие движения не вызывали нежелательного обновления?
Кроме того, мое приложение не поддерживает альбомную ориентацию в файле сборки приложения. Так что, возможно, отслеживание ориентации приложений не сработает. Я хочу, чтобы это конкретное представление определяло ориентацию, чтобы я мог настроить видеопроигрыватель для правильной ориентации.
struct TopVideo: View {
var body: some View {
ZStack {
if let vid = player {
let portrait = (orien == .portrait || orien == .unknown || orien == .portraitUpsideDown)
let width = widthOrHeight(width: true)
let height = widthOrHeight(width: false)

let vid_width = portrait ? width : (height * CGFloat(aspect.width / aspect.height))
let vid_height = !portrait ? width : (height * CGFloat(aspect.height / aspect.width))

VidPlayer(player: vid)
.rotationEffect(.degrees((orien == .portrait || orien == .unknown) ? 0.0 : orien == .portraitUpsideDown ? 180.0 : orien == .landscapeLeft ? 90 : -90 ))
.frame(width: vid_width, height: vid_height)
}
}
.onRotate { newOrientation in
withAnimation(.easeInOut(duration: 0.2)){
orien = newOrientation
}
}
}
}

struct DeviceRotationViewModifier: ViewModifier {
let action: (UIDeviceOrientation) -> Void

func body(content: Content) -> some View {
content
.onAppear()
.onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in
action(UIDevice.current.orientation)
}
}
}

extension View {
func onRotate(perform action: @escaping (UIDeviceOrientation) -> Void) -> some View {
self.modifier(DeviceRotationViewModifier(action: action))
}
}


Подробнее здесь: https://stackoverflow.com/questions/780 ... ncorrectly
Ответить

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

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

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

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

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