iOS - вращающийся вид показывает фон - PullRequest
1 голос
/ 16 июня 2010

Я создал вид, который хочу вращать.Два вида: containerView и .backgroundColor красного цвета и BackgroundImage в качестве подпредставления.Вот мой код для поворота:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
  [self adjustViewsForOrientation:toInterfaceOrientation];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  return YES;
}

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
    backgroundImage.image = [UIImage imageNamed:@"landscape.jpg"];
    backgroundImage.frame = CGRectMake(0, 0, 1024, 704);
    containerView.frame = CGRectMake(0, 0, 1024, 704);
    self.title = @"landscape";
  } else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
    backgroundImage.image = [UIImage imageNamed:@"portrait.jpg"];
    backgroundImage.frame = CGRectMake(0, 0, 768, 960);
    containerView.frame = CGRectMake(0, 0, 768, 960);
    self.title = @"portrait";
  }
}

Проблема в том, что изображение вращается, но цвет фона отображается во время вращения вида.Есть хорошее решение этой проблемы (я знаю, что я мог бы создать изображения, чтобы смешаться в цвет и установить фон в тот же цвет, но это не то, что я хотел бы).

Видео проблемы можно посмотреть здесь: http://tinypic.com/r/2quj24g/6

PS изображения взяты из OmniGroup GitHub repo и используются только для демонстрации.

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

Решением этой проблемы является установка backgroundColor для UIView или UIWindow на [UIColor blackColor].Когда вы поворачиваете Safari, происходит то же самое, только черный цвет фона, как обычно и должно быть.Все приложения на iPad вращаются таким образом, и пользователь не заметит никакой разницы.

PS - вместо использования метода willRotateToInterfaceOrientation:duration: используйте willAnimateRotationToInterfaceOrientation:duration:

0 голосов
/ 26 июля 2011

Вы можете сделать свое изображение больше, чем размер экрана. Итак, на iphone сделайте изображение 480 x 480. Или в вашем случае 1024 x 1024.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...