UIViewAutoresizingNone: изменить размер после поворота - PullRequest
1 голос
/ 27 апреля 2011

У меня есть простая структура для IPAD с AppDelegate, которая включает представление из viewController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    ClockVC *clockVC = [[ClockVC alloc]init];
    clockVC.view.frame = CGRectMake(100, 100, clockVC.view.bounds.size.width, clockVC.view.bounds.size.height);

    [self.window addSubview:clockVC.view];
    [self.window makeKeyAndVisible];

    return YES;
}

У clockVC есть viewDidLoad, определенный этим кодом:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.autoresizingMask = UIViewAutoresizingNone;
    self.view.autoresizesSubviews = UIViewAutoresizingNone;
}

ГраницыclockVC определяются IB и переопределением в приложении: didFinishLaunching ... Ширина и высота соответственно составляют 200 и 150.

ClockVC реализует метод одностадийного автоматического вращения: /

/ Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{  
     [UIView animateWithDuration:0.5 
                     animations:^{self.view.alpha = 0;}
     ];
}

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    [UIView animateWithDuration:1 
                     animations:^{self.view.alpha = 1;}
     ];
}

При первой загрузке страница корректно просматривается и вид clockVC находится в положении.Когда я поворачиваю представление ClockVC (для которого autoResizeMask установлено значение UIViewAutoresizingNon), меняем размер, чтобы занять весь экран.

Почему ??Я хотел бы сохранить начальный размер.

Вот скриншоты моей проблемы.До вращения: enter image description here

После вращения: enter image description here

1 Ответ

2 голосов
/ 27 апреля 2011

Не используйте корневое представление для этого, вместо этого добавьте подпредставление к представлению контроллера представления.UIViewControllers обычно предназначены для заполнения всего пространства их контейнера (в данном случае это окно).

Например, если вы добавите UIViewController к UINavigationController, контроллер навигации перейдет во владение.ответственность за изменение размера представления контроллера в соответствии с расположением контроллера навигации (видна ли панель навигации и т. д.).Я не уверен, как именно ведет себя UIWindow (я думаю, что это не очень четко задокументировано), но во многих местах в SDK родительский элемент контроллера представления отвечает за расположение и размер его дочерних элементов (UIPopoverController, UITabBarController и др.).

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