2013-11-23 7 views
0

Я пытаюсь изменить фрейм UIImageView, когда происходит определенное вращение, но когда я его изменяю, UIImage внутри UIImageView не выглядит затронутым, и если i NSLog размер кадра UIImageView изменился , но его не отразилось на взгляде, почему это происходит?Изменение рамки UIImageView

@property (strong, nonatomic) IBOutlet UIImageView *couponBg; 

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    if ((UIInterfaceOrientationIsPortrait(fromInterfaceOrientation)) && 
     UIDeviceOrientationLandscapeRight == [[UIDevice currentDevice] orientation])   { 
     self.couponBg.frame = CGRectMake(0, 0, self.couponBg.frame.size.width, self.couponBg.frame.size.height); 
     NSLog(@"FRAME:%@", NSStringFromCGRect(self.couponBg.frame)); 
     self.couponBg.frame = CGRectZero; 
     NSLog(@"FRAME:%@", NSStringFromCGRect(self.couponBg.frame)); 
    } 
} 

я получить правильные размеры кадров в NSLog:

2013-11-23 17: 05: 00,674 ----- [10302: 70b] КАДР: {{0, 0} , {320, 199}}

2013-11-23 17: 05: 00,674 ----- [10302: 70b] КАДР: {{0, 0}, {0, 0}}

Но на вид изображение всегда одного размера? Почему это происходит?

+1

Я думаю, что наиболее вероятным виновником является то, что вы на самом деле не присвоили 'UIImageView', который был добавлен в ваше представление' self.couponBg'. Вы можете проверить, что вы это сделали? – Adam

ответ

0

Проблема была связана с CGATransform и Autolayout, когда я сделал поворот.

0

Это взято из яблока UIView документаций:

autoresizesSubviews логическое значение, которое определяет, является ли автоматически изменяет размер приемника его подвидов, когда его изменение границы. @property (неатомный) BOOL autoresizesSubviews Когда установлено значение YES, приемник корректирует размер своих подзонов при изменении его границ. Значение по умолчанию равно YES.

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

+0

Я добавил self.couponBg.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.couponBg.autoresizesSubviews = YES; Но я получаю тот же результат. Я не знаю, что вы говорите с UIImage.autoresizingMask, потому что UIImage не обладает этим свойством. – Godfather

+1

Можете ли вы опубликовать свой код для вращения, пожалуйста? – Greg

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