Размер 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

В основном это:

  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, я смог установить фиксированный размер "width", и он работал правильно.

Другие вопросы по тегам