Как закрепить изображение на экране, чтобы оно не переворачивалось?

xcode

#1

Подскажите пожалуйста, как сделать, чтобы изображение которое я разместил как фон приложения, при повороте экрана не переворачивалось, а всегда оставалось в одном положении?


#2

Правильно сформулированный вопрос, поможет найти правильный ответ. Что значит “не переворачивалось”? Приведите пример, можно скриншотом и комментариями к нему!


#3

Как то так. не знаю, понятно ли я нарисовал!


#4

Уберите возможность ландшафтной ориентации. Оставьте только портретную. Тогда при повороте устройства лейаут не будет пересчитываться по констрейнтам


#5

но при этом другие элементы экрана поворачиваться не будут


#6

Ну тогда программно следите за ориентацией экрана и поворачивайте свое изображение

import UIKit

extension UIImage {
    func rotate(radians: CGFloat) -> UIImage {
        let rotatedSize = CGRect(origin: .zero, size: size)
            .applying(CGAffineTransform(rotationAngle: CGFloat(radians)))
            .integral.size
        UIGraphicsBeginImageContext(rotatedSize)
        if let context = UIGraphicsGetCurrentContext() {
            let origin = CGPoint(x: rotatedSize.width / 2.0,
                                 y: rotatedSize.height / 2.0)
            context.translateBy(x: origin.x, y: origin.y)
            context.rotate(by: radians)
            draw(in: CGRect(x: -origin.x, y: -origin.y,
                            width: size.width, height: size.height))
            let rotatedImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()

            return rotatedImage ?? self
        }

        return self
    }
}

#7

а как программно определить устройство пользователя и тип выбранной ориентации экрана?


#8
switch UIDevice.current.orientation {
        case .landscapeLeft, .landscapeRight:
            print("landscape")
        case .portrait, .portraitUpsideDown:
            print("Portrait")
        default:
            print("other")
        }

#9

спасибо!

Нашел как определить девайс

let device = UIDevice.current
        print(device.name)

А как определить ориентацию при первом открытии? Этот свитч определяет ориентацию при ее изменении, но при открытии упорно выдает Other. Посмотрел документацию, что-то не могу найти подходящего метода или свойства.