Размер ViewDeck левого UIViewController
Я использую 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? Что делает левый размер контроллера вида несовместимым при вращении.
Также я вижу некоторые действительно ужасные блочные тени, когда верхний ВК открывается, а затем устройство поворачивается.
Можно ли исправить размер левого ViewController и сумму, которую верхний VC открывает в ViewDeck?
РЕДАКТИРОВАТЬ
Я только что нашел ссылку на этот метод:
IISideController *constrainedSizeLeftViewController = [[IISideController alloc] initWithViewController:navigationController constrained:200];
Что ограничивает левый view controller конкретным значением. Но теперь все еще нет способа открыть верхний ВК для этой ширины?!
1 ответ
Вы можете попробовать подход, предложенный здесь: /questions/33557189/viewdeck-s-raskadrovkoj/33557203#33557203
В основном это:
- создать экземпляр вашего 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, я смог установить фиксированный размер "width", и он работал правильно.