2013-10-11 4 views
0

У меня есть UIImageView, ширина которого составляет весь экран, а высота - 400 пикселей.Изменение размера UIImageView на основе изображения относительно UIImageViewWidth

Конечный результат, который я искал, состоит в том, что каждое изображение имеет ту же ширину (ширина экрана) и высота настраивается таким образом, чтобы при этом сохранялось его соотношение сторон.

Поэтому, если изображение имеет ширину 400 пикселей, оно должно уменьшаться до 320 пикселей в ширину, а высота изображения должна корректироваться и становиться SHORTER, чтобы сохранить соотношение.

Если изображение составляет 240 пикселей в ширину, ему необходимо увеличить его ширину до 320 и отрегулировать высоту, чтобы быть TALLER, чтобы сохранить коэффициент.

Я просматривал много сообщений, которые все, кажется, просто указывают на то, что режим контента соответствует формату, но это не делает ничего, что я ищу.

Любая помощь была бы замечательной, спасибо!

ответ

0

Так что, похоже, вскоре после того, как я его разместил, я проверил раскадровку, и по какой-то причине код не переписывал раскадровку.

Если я изменил его на Aspect Fit в раскадровке, он фактически функционирует так, как он должен.

:: лицо ладони ::

0

Вам просто нужно установить свойство режима содержания в Aspect Fit в вашем ImageView.

+0

Это было то, что я делал программно, и это не сработало. Когда я изменил свойство в своем раскадровке, он работал правильно. Благодаря! –

0
UIImage *originalImage = [UIImage imageNamed:@"xxx.png"]; 
    double width = originalImage.size.width; 
    double height = originalImage.size.height; 
    double apectRatio = width/height; 

    //You can mention your own width like 320.0 
    double newHeight = [[UIScreen mainScreen] bounds].size.width/ apectRatio; 
    self.img.frame = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, newHeight); 
    self.img.center = self.view.center; 
    self.img.image = originalImage; 
0
func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage { 
     let size = image.size 

     let widthRatio = targetSize.width/image.size.width 
     let heightRatio = targetSize.height/image.size.height 

     // Figure out what our orientation is, and use that to form the rectangle 
     var newSize: CGSize 
     if(widthRatio > heightRatio) { 
      newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio) 
     } else { 
      newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio) 
     } 

     // This is the rect that we've calculated out and this is what is actually used below 
     let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height) 

     // Actually do the resizing to the rect using the ImageContext stuff 
     UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) 
     image.draw(in: rect) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return newImage! 
    } 

Теперь получить уменьшенное изображение из исходного изображения, как я сделал это нравится:

let image = UIImage(named: "YOUR IMAGE NAME") 
let newHeight = (image?.size.height/image?.size.width) * YOUR_UIIMAGE_VIEW_WIDTH 
let newSize = CGSize(width: YOUR_UIIMAGE_VIEW_WIDTH, height: newHeight) 
let newResizedImage = resizeImage(image: image, targetSize: newSize) 

Надежда, это поможет.

Смежные вопросы