UISplitView
имеет следующие методы делегата, которые помогают модифицировать макет во время вращения:
- (void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController: (UIPopoverController *)pc;
- (void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem;
эти методы соответственно вызываются методами, приватными для UISplitView
с именами _viewControllerHiding:
и _updateMasterViewControllerFrame
. Оба они вызываются непосредственно из верхней части цикла событий, по-видимому, с отложенным вызовом.
Но если я помещу свой собственный контроллер представления в качестве корня окна (вы не можете поместить контроллер разделения представления в контроллер навигации) и поместите разделенное представление, подчиненное ему, методы делегата не будут отправлены надлежащим образом. (На самом деле, один отправляется в viewDidLoad
, но ни один в поворотах.) Скрытие главного представления все еще происходит, но никому из делегатов не нравится помощь в макете (управление элементами всплывающего окна / панели).
Я попытался перенаправить следующие методы контроллера представления в автономное разделенное представление, но они не запускают его.
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration;
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
duration:(NSTimeInterval)duration;
Кто-нибудь знает, как заставить эти методы делегата UISplitView запускать? Желательно не частный API.