2010-02-01 2 views
0

Я хочу повернуть свой UIImageView и установить размер в соответствии с соотношением сторон. Но у меня есть некоторые проблемы с этим. Сначала я вставляю сюда свой код, затем я объясню проблему.UIImageView вращается и изменяется размер

imageView.size = CGSizeMake(myWidth, myHeight); 
[imageView setContentMode:UIViewContentModeCenter]; 

Таким образом, эти две строки задают размер и содержаниеМода моего изображения. Когда я это сделаю, изображение появится правильно. Поэтому, когда устройство повернуто, я получаю уведомление о вращении и

if ([self isLandscape]) { 
    CGFloat aspect = myHeight/myWidth; 
    imageView.size = CGSizeMake(myWidth/aspect, myWidth); 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
} else { 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
    imageView.size = CGSizeMake(myWidth, myHeight); 
} 

Итак, поворот завершен. Но вы можете видеть, что я также делаю изменение размера.
Проблема в том, что мой imageView имеет минимальный размер, который нельзя переопределить. Но я понял, что если я изменю свойство contentMode моего изображенияView от UIViewContentModeCenter до UIViewContentModeScaleAspectFit, тогда он будет работать хорошо, но размер меньше, чем я ожидаю. Почему это? :(Как я могу это решить? Пожалуйста, если у вас есть помощь!

ответ

1

ScaleAspectFit будет только увеличивать содержание, чтобы оно было видимым и не было никаких обрезков. Если вы хотите, чтобы ваш контент заполнил представление и, возможно, отсечение, вы должны использовать UIViewContentModeScaleAspectFill вместо.

Однако, если все, что вы хотите сделать, это обеспечить соблюдение минимального размера для каждого измерения, вы можете использовать макрос MAX вместо этого.

CGSize mySize = CGSizeMake(myWidth, myHeight); 
mySize.x = MAX(mySize.x, myXMin); 
mySize.y = MAX(mySize.y, myYMin); 
imageView.size = mySize; 

Кроме того, просто проверить, что вы на самом деле означало для размера ландшафта (width*width/height, width), а не только (height, width).

Смежные вопросы