2013-04-23 3 views
1

Я пытаюсь отобразить верхнюю часть UIImage.Показать верхнюю часть UIImageview

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

imageView.contentMode = UIViewContentModeScaleAspectFill; 
imageView.clipsToBounds = YES; 

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

Спасибо.

ответ

2

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

например. у вас есть 1000 x 1000 пикс и вы хотите, чтобы отобразить прямоугольник 200200 до 400.400

UIImageView* imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SomeImage"]]; 
imageView.frame = CGRectMake(-200, -200, 1000, 1000); 
UIView* enclosingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200); 
enclosingView.clipsToBounds = YES; 
[enclosingView addSubview: imageView]; 

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

+0

Идеальное решение, спасибо! – liquidpenguins

0

Один из способов - позвонить CGImageCreateWithImageInRect на исходное изображение, чтобы создать новое изображение только с верхней частью.

Что-то вроде:

CGImageRef newImageRef = CGImageCreateWithImageInRect(oldImage.CGImage, CGRectMake(0,0,50,50)); 
UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 
CGImageRelease(newImageRef); 

затем отобразить newImage, а не oldImage.