Подтвердить что ты не робот

Изменение UIImageView Ширина и Высота

Я читал различные сообщения здесь, задавая похожие вопросы... Я пробовал различные способы публикации, включая границы и рамки и т.д., включая следующее:

myImage.frame = CGRectMake(0.0f, 0.0f,50.0f, 50.0f);

и

myImage.bounds = CGRectMake(0.0f, 0.0f,50.0f, 120.0f);

ни одна из этих работ не работает.

Однако мне интересно, что следующий код позволяет мне перемещать изображение вокруг, но не меняет ширину:

CGRect frameRect = myImage.frame;
frameRect.size.width = 50.0f;
frameRect.origin.x += 10.5f;
myImage.frame = frameRect;

Итак, почему бы ни одна из них не меняла ширину/высоту моего ImageView?

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

Например, такой: UIImage: изменение размера, затем обрезка

конечно, это проще, чем это?

4b9b3361

Ответ 1

Следующее изменит размер UIImaveView, отсекая базовое изображение без изменения его размера и сохраняя его в левом нижнем углу:

imageView.frame = CGRectMake(
             imageView.frame.origin.x, 
             imageView.frame.origin.y, newWidth, newHeight);

imageView.contentMode = UIViewContentModeBottomLeft; // This determines position of image
imageView.clipsToBounds = YES;

Ответ 2

Во-первых, вы не можете установить фрейм или границы UIImage - это будет работать только с UIImageView.

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

Я не могу сказать, это то, о чем вы просите, но вот какой-то код для обрезания изображения определенного размера в UIImageView:

UIImage *myImage = [UIImage imageNamed:@"photo.png"];

CGRect cropRect = CGRectMake(0.0, 0.0, 320.0, 44.0));
CGImageRef croppedImage = CGImageCreateWithImageInRect([myImage CGImage], cropRect);

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]]; 

CGImageRelease(croppedImage);

Ответ 3

Из чего я беру вопрос, OP хотел изменить размер UIImageView при изменении размера контейнера UIView. Код ниже сделает это...

UIView * foo = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 25, 25)] autorelease];
foo.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UIImageView * bar = [[UIImageView alloc] initWithImage:
                     [UIImage imageNamed:@"test.png"]];
bar.autoresizingMask = foo.autoresizingMask;
[foo addSubview:bar];
[self.view addSubview:foo];

Ключевым здесь является foo.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight и bar.autoresizingMask = foo.autoresizingMask; линий. Забудьте об этом, и весь jigmarole перестанет работать.

Ответ 4

Хорошо, если вы прочитали документацию об UIIMage, вы заметите, что после его создания невозможно изменить любой параметр UIImage, решение, которое я использовал для использования высококачественных изображений для изменения некоторого параметра (например) SliderControl as Screw Image, следующий:

UIImage *tumbImage= [UIImage imageNamed:@"screw.png"];
UIImage *screw = [UIImage imageWithData:UIImagePNGRepresentation(tumbImage) scale:2];

С этим я могу использовать образ 100x100 px в моих приложениях, масштабированных до 50%.

С уважением.

Ответ 5

Попробуйте использовать UIScrollView. Добавьте UIImageView в UIScrollView в Interface Builder, затем вы можете управлять положением и размером изображения следующим образом:

    CGRect rect = [scrollView frame];

    rect.origin.x = 50.0f;
    rect.origin.y = 0.0f;
    rect.size.width = 320.0f;
    rect.size.height = 150.0f;

    [scrollView setFrame:rect];

Ответ 6

Если вы пробовали эти методы, работать не могли, единственный способ сделать это - добавить ограничение ширины и высоты в UIImageView.

// Create the constraint in code
NSLayoutConstraint *constraint0 = [NSLayoutConstraint constraintWithItem: myImage attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1.0f constant: yourNewsWidth];


NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem: myImage attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0f constant: yourNewsHeight];

[myImage addConstraint:constraint0];
[myImage addConstraint:constraint1];

Ответ 7

Используйте myImageView.frame = myNewPosAndSize; для изменения размера или изменения положения изображения (как и для любого другого вида). Это может смутить вас тем, что образ изображения рисует свое изображение с его первоначальным размером, возможно превышающим его собственные размеры. Чтобы отключить это использование myImageView.clipsToBounds = NO;

Ответ 8

Вам не нужно писать целую книгу, вы можете скопировать этот код.

Я считаю, что UIImageView всегда рисует изображение на 0,0 в масштабе 1,0. Вам нужно будет изменить размер изображения, если вы хотите продолжить использование UIImageView.