Intereting Posts
Как изменить размер представления, когда свойство transform не является преобразованием идентичности Определение местоположения / поиска и радиуса Foursquare Программирование iOS: понимать UINavigationController и RootViewController Как получить push-уведомление, когда приложение не запущено / приложение завершено Как установить метку доступности Voice Over для строк UIPickerView? UIGestureRecognizer в закругленном виде Как запустить NSTimer более чем на 180 секунд в фоновом режиме? возможно отслеживать местоположение, даже если приложение не работает dispatch_async для получения множества изображений из URL-адреса Линия кривой в круг в iOS Autolayout и UIPopoverController Mail Compose не отклоняется при нажатии кнопки отмены Перенос геокодирования с использованием SDK Google Maps на iOS 6 Не удается найти отлаживаемую отлаживаемую объект на устройстве Многопользовательская цепочка

Изображение исчезает при изменении ориентации устройства – iPhone – объектив c

Я разбираюсь в изменении интерфейса пользовательского интерфейса, когда ориентация устройства меняется на iPhone, и я столкнулся с проблемой.

У меня есть приложение с основными деталями, если я изменяю ориентацию, когда я нахожусь в подробном представлении, все работает нормально, но если я изменю его в контроллере главного представления, а затем нажимаю подробный вид, все работает, кроме моего изображения, t появляется ..

Вот связанный код:

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; if (UIDeviceOrientationIsLandscape(orientation)){ [self layoutLandscape]; } else if (UIDeviceOrientationIsPortrait(orientation)){ [self layoutPortrait]; } //set up UI elements nameLabel.text = name; dateOfBirthLabel.text = dateOfBirth; numberOfVotesLabel.text = numberOfVotes; reasonForFameLabel.text = reasonForFame; numberOfStarsLabel.text = numberOfStars; [indicator startAnimating]; //Perform this method in background (gets the product image from URL) [self performSelectorInBackground:@selector(loadImage) withObject:nil]; //Gives UIImageView memeThumb a orange border //Must import the QuartsCore Framework for this to work [imageView.layer setBorderColor: [[UIColor blackColor] CGColor]]; [imageView.layer setBorderWidth: 2.0]; } - (void) layoutLandscape{ imageView.frame = CGRectMake(20, 20, 200, 150); indicator.frame = CGRectMake(150, 40, 20, 20); nameMarker.frame = CGRectMake(70, 115, 51, 150); dateOfBirthMarker.frame = CGRectMake(20, 135, 101, 180); numberOfVotesMarker.frame = CGRectMake(233, 10, 134, 30); reasonForFameMarker.frame = CGRectMake(230, 60, 137, 30); numberOfStarsMarker.frame = CGRectMake(236, 110, 130, 30); nameLabel.frame = CGRectMake(125, 175, 135, 30); dateOfBirthLabel.frame = CGRectMake(125, 210, 135, 30); numberOfVotesLabel.frame = CGRectMake(372, 10, 134, 30); reasonForFameLabel.frame = CGRectMake(372, 60, 135, 30); numberOfStarsLabel.frame = CGRectMake(372, 110, 135, 30); } - (void) layoutPortrait{ imageView.frame = CGRectMake(20, 20, 280, 197); indicator.frame = CGRectMake(150, 109, 20, 20); nameMarker.frame = CGRectMake(106, 225, 51, 30); dateOfBirthMarker.frame = CGRectMake(56, 263, 101, 30); numberOfVotesMarker.frame = CGRectMake(23, 301, 134, 30); reasonForFameMarker.frame = CGRectMake(20, 339, 137, 30); numberOfStarsMarker.frame = CGRectMake(27, 377, 130, 30); nameLabel.frame = CGRectMake(165, 225, 135, 30); dateOfBirthLabel.frame = CGRectMake(165, 263, 135, 30); numberOfVotesLabel.frame = CGRectMake(165, 301, 134, 30); reasonForFameLabel.frame = CGRectMake(165, 339, 135, 30); numberOfStarsLabel.frame = CGRectMake(165, 377, 135, 30); } - (void) loadImage { NSURL *imageURL = [NSURL URLWithString:URL]; NSData *data = [NSData dataWithContentsOfURL:imageURL]; UIImage *image = [UIImage imageWithData:data]; imageView.image = image; [indicator stopAnimating]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; if (UIDeviceOrientationIsLandscape(orientation)) { [self layoutLandscape]; } else if (UIDeviceOrientationIsPortrait(orientation)) { [self layoutPortrait]; } } 

У кого-нибудь есть идеи?

viewDidLoad не будет вызываться, если представление уже создано и сохраняется в памяти.

попробуйте переместить код на

 -(void) viewWillAppear { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; if (UIDeviceOrientationIsLandscape(orientation)){ [self layoutLandscape]; } else if (UIDeviceOrientationIsPortrait(orientation)){ [self layoutPortrait]; } }