我正在开发一些支持纵向模式和横向模式的简单应用。我有一个视图UIView
,其约束设置(称为videoView),并在界面方向更改时正确调整大小。在该视图的顶部,我添加了自定义图层。该图层应该遵循视图的框架,因此当界面方向改变时,它也应该改变。
问题是图层没有约束。我做过类似的事情:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
_previewLayer.frame = CGRectMake(0, 0, self.videoView.frame.size.width, self.videoView.frame.size.height);
}
它可以正确调整图层大小,但看起来并不好看。第一个视频调整大小,然后在一些延迟层调整大小后。我希望它是一个平稳的过渡。我怎么能做到这一点?
答案 0 :(得分:1)
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
print("Landscape")
} else {
print("Portrait")
}
这将告诉您设备是否会在它发生之前旋转。这是您可以运行代码的地方。
答案 1 :(得分:0)
您是否尝试使用setNeedsLayout
或使用layoutIfNeeded
强制更新视图布局?您在结束子视图结束时正确地更改框架,以便在下一个更新周期等待应用更改。
更好的方法是在viewWillLayoutSubviews
上应用框架。