【发布时间】:2021-10-04 10:01:10
【问题描述】:
我正在尝试更新 iPhoneX 的 viewWillTransition(to size: with coordinator:) 方法。
但我无法获得 safeAreaInsets 值的目的地。
请帮忙!
override func viewWillTransition(to size: CGSize,
with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if #available(iOS 11.0, *) {
if let window = UIApplication.shared.keyWindow {
let insets = window.safeAreaInsets
contentFrame = CGRect(x:insets.left, y:insets.top,
width:size.width - insets.left - insets.right,
height:size.height - insets.top - insets.bottom)
}
} else {
contentFrame = CGRect(x:0,y:0,width:size.width, height:size.height)
}
self.updateViews()
}
【问题讨论】:
-
“我无法获取 sefeAreaInsets 值的目的地”是什么意思?有什么问题?为什么要查看窗口?你的代码没有意义。你到底想做什么?
-
我想要旋转后的值。此时是旋转之前
-
viewWillTransitionToSize只有一件事:大小。旋转后大小的值为size。你认为这与安全区域插图有什么关系?我再次问你:你为什么需要这些信息?你最终想要做什么? (我第二次问了。) -
做旋转动画例程。
-
那么也许你应该说出它们是什么。您在代码中需要此信息的事实是“难闻的气味”。你之前没有关注顶部和底部的布局指南,那么为什么你现在关心安全区域插图呢?我再次问你:有什么问题?你看,这是一个 x-y 问题。你没有问你真正想知道什么,你做了一个错误的假设,现在你对它不起作用感到不安。它不会去工作;这是错误的。您需要退后一步,询问您的真正问题。