2010-06-16 4 views
1

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

- (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

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

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

0

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

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