Изменение 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: изменение размера, затем обрезка
конечно, это проще, чем это?
Ответы
Ответ 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.