Как пропорционально масштабировать UIImageView? - PullRequest
336 голосов
/ 09 октября 2008

У меня есть UIImageView, и цель состоит в том, чтобы пропорционально уменьшить его, задав ему либо высоту, либо ширину.

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

//Add image view
[self.view addSubview:imageView];   

//set contentMode to scale aspect to fit
imageView.contentMode = UIViewContentModeScaleAspectFit;

//change width of frame
CGRect frame = imageView.frame;
frame.size.width = 100;
imageView.frame = frame;

Размер изображения изменился, но позиция не вверху слева. Каков наилучший подход к масштабированию image / imageView и как мне исправить положение?

Ответы [ 17 ]

6 голосов
/ 16 декабря 2016

Установите UIimageview по шкале .........

enter image description here

5 голосов
/ 20 ноября 2013

UIImageView + Scale.h:

#import <Foundation/Foundation.h>

@interface UIImageView (Scale)

-(void) scaleAspectFit:(CGFloat) scaleFactor;

@end

UIImageView + Scale.m:

#import "UIImageView+Scale.h"

@implementation UIImageView (Scale)


-(void) scaleAspectFit:(CGFloat) scaleFactor{

    self.contentScaleFactor = scaleFactor;
    self.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor);

    CGRect newRect = self.frame;
    newRect.origin.x = 0;
    newRect.origin.y = 0;
    self.frame = newRect;
}

@end
2 голосов
/ 25 февраля 2016

Я использовал следующий код. Где imageCoverView это UIView содержит UIImageView

if (image.size.height<self.imageCoverView.bounds.size.height && image.size.width<self.imageCoverView.bounds.size.width)
{
    [self.profileImageView sizeToFit];
    self.profileImageView.contentMode =UIViewContentModeCenter
}
else
{
    self.profileImageView.contentMode =UIViewContentModeScaleAspectFit;
}
2 голосов
/ 05 января 2017

Если предложенные здесь решения не работают для вас, а актив изображения на самом деле представляет собой PDF, обратите внимание, что XCode фактически обрабатывает PDF-файлы иначе, чем файлы изображений. В частности, он не может масштабироваться для правильного заполнения PDF-файлом: вместо этого он становится мозаичным. Это сводило меня с ума, пока я не понял, что проблема была в формате PDF. Преобразование в JPG, и вы должны быть хорошими, чтобы идти.

1 голос
/ 25 февраля 2016

Обычно я использую этот метод для своих приложений ( Swift 2.x совместимый):

// Resize UIImage
func resizeImage(image:UIImage, scaleX:CGFloat,scaleY:CGFloat) ->UIImage {
    let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(scaleX, scaleY))
    let hasAlpha = true
    let scale: CGFloat = 0.0 // Automatically use scale factor of main screen

    UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
    image.drawInRect(CGRect(origin: CGPointZero, size: size))

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return scaledImage
}
0 голосов
/ 09 октября 2008

Я думаю, что вы можете сделать что-то вроде

image.center = [[imageView window] center];
0 голосов
/ 11 октября 2008

Вот как вы можете легко его масштабировать.

Это работает в 2.x с симулятором и iPhone.

UIImage *thumbnail = [originalImage _imageScaledToSize:CGSizeMake(40.0, 40.0) interpolationQuality:1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...