0

Я разрабатываю несколько простых приложений, которые поддерживают как портретный режим, так и ландшафтный режим. У меня есть вид UIView, который имеет свои ограничения, установленные (называемые видеовидео), и правильное изменение размера при изменении ориентации интерфейса. В дополнение к этому представлению я добавил пользовательский слой, который. Этот слой должен следовать кадру зрения, поэтому при изменении ориентации интерфейса он тоже должен измениться.Изменение размера слоя при изменении ориентации интерфейса?

Проблема в слоях не имеет ограничений. Я сделал что-то вроде этого:

- (void) viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    _previewLayer.frame = CGRectMake(0, 0, self.videoView.frame.size.width, self.videoView.frame.size.height); 
} 

Он правильно изменяет размер слоя, но он выглядит не очень хорошо. Первый videoView изменяет размер, а затем после некоторого изменения размера слоя. Я бы хотел, чтобы это был один плавный переход. Как я могу это сделать?

ответ

1
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
if UIDevice.currentDevice().orientation.isLandscape.boolValue { 
    print("Landscape") 
} else { 
    print("Portrait") 
} 

Это скажет вам, если устройство будет вращаться, прежде чем это произойдет. Здесь вы можете запустить свой код.

+0

Конечно, но как узнать, какой размер я должен изменить на свой слой? – MegaManX

+0

Вы хотите, чтобы ваш слой был размером экрана или что? Больше информации пожалуйста. –

+0

Слой добавлен поверх видеоизображения. Когда изменяется ориентация интерфейса, изменяется размер видеоизображения. Слой должен имитировать этот размер и изменять размер до такого размера. – MegaManX

0

Вы пытались обновить макет вида снова, используя setNeedsLayout или заставляя его layoutIfNeeded? Вы меняете рамку сразу, когда она заканчивается, выкладывая подпункты, поэтому она будет ждать следующего цикла обновления, чтобы применить изменения.

Лучшим подходом будет применение рамки на viewWillLayoutSubviews.

Успехов, Франциско

+0

Я забыл упомянуть, что я тоже просмотрел viewWillLayoutSubviews, но без эффекта – MegaManX