左侧 UIViewController 的 ViewDeck 大小

Posted

技术标签:

【中文标题】左侧 UIViewController 的 ViewDeck 大小【英文标题】:ViewDeck sizing of left UIViewController 【发布时间】:2013-06-19 18:07:08 【问题描述】:

我正在使用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开到那个宽度?!

【问题讨论】:

我真的不认为你可以。浏览了头文件,看不到任何东西。现在已移至允许固定大小的 ECSlidingViewController。 【参考方案1】:

您可以尝试这里建议的方法:https://***.com/a/16484446/928209

基本上是这样的:

    在代码中实例化您的 IIViewDeckController(不是从 故事板) 将视图平台控制器的中心视图设置为 rootViewController 从你的故事板和侧视图到任何东西 你需要。 将应用程序的 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 设置为应用程序的 rootViewController 不是 通过情节提要而是在我的 AppDelegate 中的代码中,我可以将固定大小设置为“宽度”并且它可以正常工作。

【讨论】:

以上是关于左侧 UIViewController 的 ViewDeck 大小的主要内容,如果未能解决你的问题,请参考以下文章

为啥 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图?

从 UIViewController 中的 UITableView 中删除核心数据

将 UIViews 作为子视图添加到 UIViewController [关闭]

具有多个视图的 UIViewcontroller

如何从一个 XIB 中的不同 UIViewController 文件控制第二个 UIView(子视图)

如何从 UIView 推送 UIViewController