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 宽度这使得左视图控制器在旋转时大小不一致。

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

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

编辑

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

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

哪个确实将左视图控制器限制为特定值。但是现在还是没有办法让顶级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) 而不是我想要的实际“宽度”。一旦我不是通过故事板而是在我的 AppDelegate 中的代码中将IIViewDeckController 设置为应用程序的 rootViewController ,我就可以将固定大小设置为“宽度”并且它可以正常工作。

于 2013-12-24T20:04:31.230 回答