Я хочу определить ориентацию устройства в 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
Ориентация устройства Swift обновляется неправильно ⇐ IOS
Программируем под IOS
-
Anonymous
1769257610
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))
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78094943/swift-device-orientation-updating-incorrectly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия