🔢 SwiftUI: определение угла раскрытия iPhone Duo.
В iOS 27.1 появился модификатор .onHingeChange, который позволяет получить текущее состояние угла раскрытия iPhone Duo и использовать его для управления анимацией, звуком или другими эффектами.
Пример - изменение высоты тона гитары в зависимости от угла раскрытия устройства:
struct InstrumentView: View {
@State private var pitchBend: Double = 0
var body: some View {
GuitarView(pitchBend: pitchBend)
.onHingeChange { _, context in
if let hinge = context.hinge, hinge.status == .partiallyOpen {
pitchBend = calculatePitchBend(angle: hinge.angle)
} else {
pitchBend = 0
}
}
}
private func calculatePitchBend(angle: Angle) -> Double { ... }
}
Когда устройство частично открыто, угол передается в метод, который вычисляет значение изменения тона. В остальных состояниях значение сбрасывается в ноль.
Где еще это может быть полезно:
Угол раскрытия можно использовать не только для звука. Например, для управления громкостью: чем шире раскрыто устройство, тем громче звук. Или для анимации: персонаж на экране может наклоняться в зависимости от положения шарнира. Или для игр: угол становится дополнительным управляющим элементом, который не требует касания экрана. Все, что угодно, где физическое положение устройства может влиять на поведение приложения.
🔗 Читать подробнее
💡 Вывод:
.onHingeChange дает разработчикам доступ к состоянию шарнира iPhone Duo. Это открывает новые сценарии для интерактивных приложений: музыкальных инструментов, игр, обучающих программ. Угол раскрытия становится еще одним способом взаимодействия с устройством, наравне с касанием, жестами и голосом.
Подписаться на канал:
➡️ Telegram | Max
В iOS 27.1 появился модификатор .onHingeChange, который позволяет получить текущее состояние угла раскрытия iPhone Duo и использовать его для управления анимацией, звуком или другими эффектами.
Пример - изменение высоты тона гитары в зависимости от угла раскрытия устройства:
struct InstrumentView: View {
@State private var pitchBend: Double = 0
var body: some View {
GuitarView(pitchBend: pitchBend)
.onHingeChange { _, context in
if let hinge = context.hinge, hinge.status == .partiallyOpen {
pitchBend = calculatePitchBend(angle: hinge.angle)
} else {
pitchBend = 0
}
}
}
private func calculatePitchBend(angle: Angle) -> Double { ... }
}
Когда устройство частично открыто, угол передается в метод, который вычисляет значение изменения тона. В остальных состояниях значение сбрасывается в ноль.
Где еще это может быть полезно:
Угол раскрытия можно использовать не только для звука. Например, для управления громкостью: чем шире раскрыто устройство, тем громче звук. Или для анимации: персонаж на экране может наклоняться в зависимости от положения шарнира. Или для игр: угол становится дополнительным управляющим элементом, который не требует касания экрана. Все, что угодно, где физическое положение устройства может влиять на поведение приложения.
🔗 Читать подробнее
💡 Вывод:
.onHingeChange дает разработчикам доступ к состоянию шарнира iPhone Duo. Это открывает новые сценарии для интерактивных приложений: музыкальных инструментов, игр, обучающих программ. Угол раскрытия становится еще одним способом взаимодействия с устройством, наравне с касанием, жестами и голосом.
Подписаться на канал:
➡️ Telegram | Max