- (IBAction)toggleMasterHidden:(id)sender
{
isMasterHidden = !isMasterHidden;
self.delegate = nil;
self.delegate = self;
[self.view setNeedsLayout];
}
- (BOOL)splitViewController:(UISplitViewController *)svc
shouldHideViewController:(UIViewController *)vc
inOrientation:(UIInterfaceOrientation)orientation
{
return isMasterHidden;
}
これはうまくいきますが、結果はすぐに出ます。トランジションをアニメーション化しようとしていますが、取るべきアプローチがわかりません。以下はsetNeedsLayout
実際にはビューを変更しないため、後で行うようにフラグを設定するだけなので機能しません。
// Does not work
[UIView beginAnimations:@"toggleMaster" context:nil];
[UIView setAnimationDuration:0.4];
[self.view setNeedsLayout];
[UIView commitAnimations];
// Also does not work, I'm assuming parent class implementation is empty
- (void)viewWillLayoutSubviews
{
[UIView beginAnimations:@"toggleMaster" context:nil];
[UIView setAnimationDuration:0.4];
[super viewWillLayoutSubviews];
[UIView commitAnimations];
}
これを実現するにはカスタム splitviewcontroller を作成する必要があるのではないかと心配していますが、これは完全な実装に近いと考えているため残念です。