【问题标题】:ViewDeck sizing of left UIViewController左侧 UIViewController 的 ViewDeck 大小
【发布时间】: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。

标签: ios uiviewcontroller viewdeck


【解决方案1】:

您可以尝试这里建议的方法: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 设置为应用程序的 rootViewController 不是 通过情节提要而是在我的 AppDelegate 中的代码中,我可以将固定大小设置为“宽度”并且它可以正常工作。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多