Как сохранить аспект-фиксированный UIView, заполняющий экран в любой ориентации экрана программно в swift?



Я хочу только этот простой эффект:

То, что у меня есть изображение, автоматически ориентируется в соответствии с ориентацией устройства / экрана, оно всегда заполняет весь экран, не растягиваясь, так что аспект не меняется.

Я работаю с Xcode, хотя я получил много ответов с помощью раскадровки и UI builder, мне действительно не нравятся такие способы, которые хорошо работают, но вы понятия не имеете, как это работает, поэтому я пытался найти способ сделать это программно.

У меня есть попытался установить представление изображения в качестве подвида, но оно не исправляется после поворота устройства, оно либо растягивается, чтобы заполнить экран, либо перемещается в другое место с неизменным размером (когда я пытаюсь пересчитать кадр и применить к подвиду), затем я попытался переопределить функцию drawrect, UIView, кадр работает нормально, но анимация вращения нарушена (он растягивается сам во время вращения, а затем переходит в финальный кадр).

Идеальный эффект, который я хочу, - это как iOS оригинальное приложение для фотографий, когда я проверяю фотографию, оно изменяет размер, чтобы исправить экран, и даже когда я поворачиваю экран, анимация работает просто идеально, вращение и масштабирование происходят в одно и то же время, и никакого пропуска растяжки не происходит. кто-нибудь может мне помочь?

Спасибо!!!!!

Способ, которым я устанавливаю Кадр:

func locating (imgsize:CGSize,scrsize:CGSize) ->CGRect {
var size:CGSize
var ori:CGPoint
if ((imgsize.height / imgsize.width) * scrsize.width>=scrsize.height){
    size = CGSize(width:scrsize.width,height:imgsize.height*(scrsize.width/imgsize.width))
    ori = CGPoint(x:0,y:scrsize.height-imgsize.height*(scrsize.width/imgsize.width))

}
else {
    size = CGSize(width:imgsize.width*(scrsize.height/imgsize.height),height:scrsize.height)
    ori = CGPoint(x:-(imgsize.width*(scrsize.height/imgsize.height)-scrsize.width)/2,y:0)
    }
return CGRect(origin:ori,size:size)

}

240   1  

1 ответ:

Кроме математических штучек! вот также решения, которые могут работать для вас!

  • установите ширину и высоту изображения в положение superview width and height.

self.imageView.frame = self.imageView.superView?.bounds

  • Затем установите imageView's contentMode свойство aspectFill или aspectFit

    1. self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    2. self.imageView.contentMode = UIViewContentModeScaleAspectFill;
    Ничего не найдено.

Добавить ответ:
Отменить.