Изменить фоновое изображение на iPad после поворота

Я показываю bg своего приложения, используя UIImageView. Для поддержки правильного поворота интерфейса я пишу метод layoutSubviews. В этом методе свойство .frame изменяется правильно, но когда я пытаюсь изменить изображение UIImageView, вот так:

view = [self viewWithTag:1002];    
 ((UIImageView *)view).image = [UIImage imageNamed:@"portrait.png"];

Ничего не изменилось. Я что-то не так сделал или невозможно изменить образ UIImageView в методе layoutSubviews?


person lighting    schedule 07.03.2011    source источник


Ответы (2)


попробуй это

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {

    // change background here

    }
person visakh7    schedule 07.03.2011
comment
Я считаю, что переход будет более плавным, если вы измените изображение на полпути поворота, а не до или после. - (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration { - person zekel; 25.08.2011
comment
@zekel этот метод устарел в iOS 5, вместо этого вы должны использовать: willAnimateRotationToInterfaceOrientation:duration: - person Marco; 14.09.2012

Вы управляете чередованием представлений с помощью UIViewController (обязательно ознакомьтесь с документацией здесь: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html ). Если вы внедрили UIViewController для своего UIImageView, вы можете установить изображение в методе viewDidLoad:.

Вы не должны переопределять метод layoutSubviews: для выполнения этого действия. layoutSubviews: заключается в том, чтобы делать то, что указано в названии - он должен выполнять позиционирование и изменение размера любых подвидов, которые в настоящее время имеет это представление. Вам не нужно переопределять этот метод, если только вы не хотите сделать какую-то специальную компоновку из подпредставлений и вызывается в цикле выполнения, когда для UIView установлено значение «требует изменения размера».

Я настоятельно рекомендую вам установить изображение из какого-либо другого места в коде. Если вы хотите, чтобы изображение менялось при повороте представления, вы можете установить изображение в методе - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation подкласса UIViewController.

person James Bedford    schedule 07.03.2011