Променете фоновото изображение на 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