Как сохранить аспект-фиксированный 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)
}
1 ответ:
Кроме математических штучек! вот также решения, которые могут работать для вас!
- установите ширину и высоту изображения в положение superview width and height.
self.imageView.frame = self.imageView.superView?.bounds
Затем установите
imageView'scontentModeсвойствоaspectFillилиaspectFit
self.imageView.contentMode = UIViewContentModeScaleAspectFit;self.imageView.contentMode = UIViewContentModeScaleAspectFill;
Comments