左侧UIViewController的ViewDeck大小调整

时间:2013-06-19 18:07:09

标签: ios uiviewcontroller viewdeck

我正在使用ViewDeck来支持我的iPad应用中的滑动用户界面,但我遇到了一些问题。

我想将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的宽度?然后,这会使左视图控制器大小在旋转时不一致。

当topVC打开然后旋转设备时,我看到一些非常可怕的块状阴影。

是否可以修复左侧ViewController的大小以及顶级VC在ViewDeck中打开的数量?

修改

我刚刚找到了对此方法的引用:

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

哪个DOES将左视图控制器约束到特定值。但是现在还没有办法让顶级VC打开那个宽度?!

1 个答案:

答案 0 :(得分:0)

您可以尝试此处建议的方法:https://stackoverflow.com/a/16484446/928209

基本上是:

  1. 在代码中实例化你的IIViewDeckController(而不是来自 故事板)
  2. 将视图卡座控制器的中心视图设置为 你的故事板和侧视图中的rootViewController 你需要。
  3. 将应用的rootViewController设置为视图卡片组 控制器。
  4. 这是我的代码:

    - (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)而不是我想要的实际“宽度”。一旦我通过故事板将应用程序而不是的rootViewController创建为IIViewDeckController,而是在我的AppDelegate中的代码中,我可以将固定大小设置为“width”并且它可以正常工作。