2
- (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 を作成する必要があるのではないかと心配していますが、これは完全な実装に近いと考えているため残念です。

4

0 に答える 0