UIImageView повернуть и изменить размер - PullRequest
0 голосов
/ 01 февраля 2010

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

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

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

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 моего imageView с UIViewContentModeCenter на UIViewContentModeScaleAspectFit, то это будет работать хорошо, но размер будет меньше, чем я ожидаю. Это почему? :( Как я могу решить эту проблему? Пожалуйста, если у вас есть помощь!

1 Ответ

1 голос
/ 01 февраля 2010

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...