UIImageView и проблема ориентации окна - PullRequest
2 голосов
/ 19 июля 2011

ЧТО Я ХОЧУ СДЕЛАТЬ

Что я хочу, так это просмотр изображений поверх приложения, который я могу контролировать его внешний вид.Например, на главной странице я не хочу баннер, но в другом представлении я хочу.Это означает, что если я хочу иметь баннер, я должен сдвинуть вниз весь вид.

ЧТО Я СДЕЛАЛ

Следующее находится в моем приложенииДелегат.По сути, я смещаю представление customTabBarController вниз на 145 пикселей для баннера.

if ([self.customTabBarController interfaceOrientation] == UIInterfaceOrientationPortrait) {

[customTabBarController.view setFrame:CGRectMake(0, 145, 768,1024-145)];
banner = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 145)];

}
else if ([self.customTabBarController interfaceOrientation] == UIInterfaceOrientationPortraitUpsideDown) {

    [customTabBarController.view setFrame:CGRectMake(0,0, 768,1024-145)];
    banner = [[UIImageView alloc] initWithFrame:CGRectMake(0, 768+145, 768, 145)];

}

banner.image = image;

banner.hidden = NO;

[self.window addSubview:banner];

ЧТО ТАКОЕ ПРОБЛЕМА

Теперь я сделал портретчасть ориентации, но когда я пытаюсь изменить ориентацию, изображение тоже меняет ориентацию;Это означает, что изображение переворачивается на бок, когда я меняю iPad на альбомную и перевернутую поверхность.По сути, он постоянно находится на одной стороне iPad.

Кто-нибудь может помочь?Предложения по другим методам тоже приветствуются.

РЕДАКТИРОВАТЬ: я понимаю, что я не реализовал setFrame для альбомной ориентации, но я хотел закончить его сначала для перевернутой портретной ориентации, но код не работает.Когда приложение переворачивается вверх дном, баннер выглядит снизу, а изображение перевернуто.

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

См. " Проблема ориентации при использовании insertSubview ."Как правило, вы не должны вставлять представления в UIWindow.Это не вращается.Вы должны вставить их в window.rootViewController.view или ниже, чтобы автоматически получить правильное преобразование.В противном случае вам нужно будет рассчитать эффективное преобразование самостоятельно, используя метод, подобный effectiveTransform, указанному в « неправильной ориентации в UIViewController при его анимации ».Однако, когда это возможно, используйте представление root.Это делает всю магию для вас.

1 голос
/ 19 июля 2011

Задумывались ли вы о том, чтобы поместить все это в UIViewController, который поддерживает несколько ориентаций? Вы можете использовать маску авторазмера для достижения правильного размера в разных ориентациях.

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

Вы можете зарегистрироваться для получения уведомлений об изменении ориентации и применить CGTransform к своему баннеру UIView

...