Mam programowo skonfigurowany kontroler, który ma dziecko UIPageViewController
. Wyświetla różne inne kontrolery widoku, które są również programowane. Widoki kontrolerów widoku mają wartość translatesAutoresizingMaskIntoConstraints
ustawioną na YES
, ale widok kontrolera widoku strony używa wiązań do ustawiania się w kontrolerach widoku z góry.UIPageViewController nie zmienia rozmiaru kontrolek podrzędnych
Problem polega na tym, że gdy użytkownik obraca urządzenie, kontroler widoku zmienia rozmiar ramki, ale jego kontrolki widoku podrzędnego tego nie robią. Po didRotateFromInterfaceOrientation
jego ramka nadal znajduje się w starej orientacji. Sprawdziłem, że metody rotacji są wywoływane na kontrolerach podrzędnych, ich ramka po prostu się nie zmienia.
skonfigurować kontroler widoku strona takiego:
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.view.backgroundColor = [UIColor clearColor];
self.pageViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
self.pageViewController.dataSource = self;
self.pageViewController.delegate = self;
[self.pageViewController willMoveToParentViewController:self];
[self.view addSubview:self.pageViewController.view];
[self addChildViewController:self.pageViewController];
[self.pageViewController didMoveToParentViewController:self];
self.currentPageIndex = 0;
self.currentPageController = [self pageForIndex:self.currentPageIndex];
self.currentPageController.delegate = self;
[self.pageViewController setViewControllers:@[self.currentPageController] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
Próbowałem nazywając setNeedsLayout
ale to niezdarny animacja rotacji i następną stronę, że jest nie do machnięcia również odpowiednio przeskalowane.
Dlaczego kontroler widoku nie zmienia rozmiaru kontrolek podrzędnych i jak mogę to zrobić?
Dzięki!
Czy znalazłeś rozwiązanie swojego problemu? Utknąłem z tym samym problemem. – AlexR
Problem polega na tym, że -didRotateFromInterfaceOrientation na kontrolerach podrzędnych nigdy nie jest wywoływany. Rozwiązałem go ręcznie, wywołując go z nadrzędnych kontrolerów widoku -didRotateFromInterfaceOrientation. –
Jaka jest metoda kontrolera widoku Clild View do wywoływania zmiany orientacji? – Satyam