регулируя ширину UIImageView пропорционально при изменении высоты - PullRequest
1 голос
/ 13 января 2012

У меня есть следующий код:

UIImageView * imgView = [[UIImageView alloc] initWithImage:image];

NSLog(@"IMAGE SIZE WIDTH IS %f AND HEIGHT IS %f", imgView.frame.size.width, imgView.frame.size.height);

[imgView setUserInteractionEnabled:YES];
[imgView setContentMode:UIViewContentModeScaleAspectFit];

CGRect frame = imgView.frame;
frame.size.width = SCREEN_WIDTH_PORTRAIT;
[imgView setFrame: frame];

однако высота этого вида соответственно не изменилась, что не так?

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Изображение будет соответствовать рамке с той же высотой, что и изменение ширины.Таким образом, в зависимости от соотношения сторон изображения, изображение может не изменить свой размер.Вы можете определить соотношение сторон UIImage, а затем рассчитать высоту на основе новой ширины.

0 голосов
/ 13 января 2012

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

Если вы просто пытаетесь масштабировать с изменением ориентации, вы можете использовать UIViewAutoresizingMask и установить его так:

imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight;

Это сделает его растянутым при автоматическом переключении ориентаций.

Edit: Вот как вы можете изменить высоту и сохранить соотношение и анимировать новый кадр:

CGRect frame = imgView.frame;
float ratio = frame.size.width/SCREEN_WIDTH_PORTRAIT;
frame.size.width = SCREEN_WIDTH_PORTRAIT;
frame.size.height *= ratio;
[UIView animateWithDuration:.25 animations:^{
    [imgView setFrame: frame];              
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...