我正在使用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打开那个宽度?!
答案 0 :(得分:0)
您可以尝试此处建议的方法:https://stackoverflow.com/a/16484446/928209
基本上是:
这是我的代码:
- (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”并且它可以正常工作。