0

ViewDeckを使用して iPad アプリのスライド UI を動かしていますが、いくつか問題が発生しています。

回転に関係なく、 leftViewController のサイズを特定のサイズにしたい。ViewDeck をセットアップする必要があるコードは次のとおりです。ストーリーボードを使用しています。

        - (id)initWithCoder:(NSCoder *)aDecoder
    {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"leftViewController"];
        JWTimerGroupsViewController *timerGroupsViewController = navigationController.viewControllers[0];

        IISideController *constrainedSizeLeftViewController = [[IISideController alloc] initWithViewController:navigationController];

        JWMainTableViewController *middleViewController = (JWMainTableViewController *)[storyboard instantiateViewControllerWithIdentifier:@"middleViewController"];    
        [timerGroupsViewController setDelegate:middleViewController];
        self = [super initWithCenterViewController:middleViewController leftViewController:constrainedSizeLeftViewController];
        self.centerhiddenInteractivity = IIViewDeckCenterHiddenNotUserInteractiveWithTapToClose;

        /* This below IS NOT the size of the left view controller? Just seems odd that it isn't */
        [super setLeftSize:200];  
        [super setSizeMode:IIViewDeckViewSizeMode];

        if (self) {
            // Add any extra init code here
        }

        return self;
    }

setLeftSizeは topViewControllers の幅を設定するように見えますか? これにより、回転時に左のView Controllerのサイズが一貫しなくなります。

また、topVC を開いてからデバイスを回転させると、非常にひどいブロック状の影が表示されます。

左側の ViewController のサイズと上部の VC が ViewDeck で開く量を修正することは可能ですか?

編集

このメソッドへの参照を見つけました:

    IISideController *constrainedSizeLeftViewController = [[IISideController alloc] initWithViewController:navigationController constrained:200];

左のViewControllerを特定の値に制限します。しかし、トップ VC をその幅に開く方法はまだありませんか?!

4

1 に答える 1

0

ここで提案されているアプローチを試すことができます: https://stackoverflow.com/a/16484446/928209

基本的には次のとおりです。

  1. コードで IIViewDeckController をインスタンス化します (ストーリーボードからではありません)。
  2. ビュー デッキ コントローラーの中央のビューをストーリーボードから rootViewController に設定し、サイド ビューを必要なものに設定します。
  3. アプリの rootViewController をビュー デッキ コントローラーに設定します。

これが私のコードです:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    UIStoryboard* storyboard = self.window.rootViewController.storyboard; 

    UINavigationController* leftSideVC = (UINavigationController*)[storyboard instantiateViewControllerWithIdentifier:@"tableNavController"];
    UINavigationController* centerNavVC = (UINavigationController*) self.window.rootViewController;

    IIViewDeckController* viewDeckController =  [[IIViewDeckController alloc] initWithCenterViewController:centerNavVC leftViewController:leftSideVC rightViewController:nil];
    self.window.rootViewController = viewDeckController;
    viewDeckController.resizesCenterView = YES;
    viewDeckController.sizeMode = IIViewDeckViewSizeMode;

    [self.window makeKeyAndVisible];
    return YES;
}

ストーリーボードをロードした後、IIViewDeckController でこのアプローチのコーディングを試みたところ、ビューのサイズ設定に関する多くの問題が解決したことがわかりました。たとえば、以前は、側面図を固定幅にするために、必要な実際の「幅」ではなく、leftSize プロパティを (screenWidth - width) に設定する必要がありました。IIViewDeckController をストーリーボード経由ではなく、AppDelegate のコードでアプリの rootViewController にすると固定サイズを「幅」に設定でき、適切に機能しました。

于 2013-12-24T20:04:31.230 に答える