it-swarm.com.ru

Изменение размера изображения в соответствии с UIImageView

Я очень плохо знаком с Objective C, и я только начинаю понимать. Я хочу сделать что-то действительно простое, но это оказывается довольно сложной задачей:

Я пытаюсь отобразить изображение в UIImageView. Изображение, которое я показываю, большое, и я хочу, чтобы оно уменьшилось до размера UIImageView. Я попытался установить режим просмотра AspectFit, но изображение отображается в исходном размере и обрезается UIImageView. Мой код ниже:

- (void)changeImages
{
    UIImage* img11 = nil;

    img11 = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"jpeg"]];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.image = img11;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self changeImages];
}

Кто-нибудь может пролить свет на это, пожалуйста?

Спасибо!

23
cristi71000

Привет, я бы попробовал это ...

- (void)changeImages
{
    UIImage *img11 = [UIImage [email protected]"dog.jpeg"];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.clipsToBounds = YES;
    [u11 setImage:img11];
}

- (void)viewWillAppear:animated
{
    [super viewWillAppear:animated];

    [self changeImages];
}

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

НТН.

31
Fogmeister

Добавьте к своему UIViewController.m: 

-(UIImage *)resizeImage:(UIImage *)image imageSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0,0,size.width,size.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    // here is the scaled image which has been changed to the size specified
    UIGraphicsEndImageContext();
    return newImage;
}

С помощью:

UIImage *image = [UIImage imageNamed:@"image.png"];
CGSize size = CGSizeMake(50, 63); // set the width and height 
UIImage *resizedImage = [self resizeImage:image imageSize:size];

Я надеюсь, что это помогает. 

16
Erhan Demirci
CGSize size=CGSizeMake(79, 84);//set the width and height
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
//here is the scaled image which has been changed to the size specified
UIGraphicsEndImageContext();

Это работает точно и не забудьте импортировать QuartzCore FrameWork ..

Счастливого кодирования (^ _ ^) ....

4
Abhilash Reddy

Вы также можете установить View: Mode в Aspect Fit в Инспекторе Атрибутов в Интерфейсном Разработчике

1
Tad

Я сделал следующее, и это помогло Изменить режим на «аспект заливки» от значения по умолчанию «Масштаб для заполнения»

и добавьте строку кода следующим образом (я сделал это в конфигурации ячейки):

cell.photo.clipsToBounds = true
0
Gulz