左侧 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 [关闭]