0

我正在開發一些支持縱向模式和橫向模式的簡單應用程序。我有一個視圖UIView設置了其約束(稱爲videoView),並在界面方向更改時正確調整大小。在該視圖的頂部,我添加了自定義圖層。該層應該遵循視圖的框架,所以當界面方向改變時,它也應該改變。界面方向更改時調整圖層大小?

問題是圖層沒有約束。我做了這樣的事情:

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

它正確調整圖層大小,但它看起來不太好。首先調整視頻大小,然後調整一些延遲層。我希望這是一個平穩過渡。我怎樣才能做到這一點?

回答

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

這會告訴你,如果該設備將是要轉動它發生之前。這是您可以運行代碼的地方。

+0

當然,但我怎麼知道我應該調整我的圖層的大小? – MegaManX

+0

你想讓你的圖層成爲屏幕大小還是什麼?請提供更多信息。 –

+0

圖層添加在videoView的頂部。當界面方向改變時,videoView調整大小。圖層需要模仿這個尺寸,並調整到這個尺寸。 – MegaManX

0

您是否嘗試過使用setNeedsLayout再次更新視圖佈局,或是使用layoutIfNeeded強制更新視圖佈局?當它結束佈局子視圖時,您正在更改框架,以便它將等待下一個更新週期以應用更改。

更好的方法是在viewWillLayoutSubviews上應用該框架。

祝你好運, 舊金山

+0

我忘了提及我也trew viewWillLayoutSubviews但沒有效果 – MegaManX

相關問題