ios - 在 Swift 中的过渡更改后移动事物
问题描述
我之前问了一个关于从横向转换到纵向时遇到的一些布局问题的问题。我在这里问但没有得到回应。分析问题后,我认为我的问题是我正在调用 viewWillTransition 上的重新定位方法:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
resetPositions()
}
func resetPositions() {
if isMainContainer {
if UIApplication.shared.statusBarOrientation.isLandscape {
containerViewBot.center.y = containedView.center.y
containerViewBotBack.center.y = containedView.center.y - offset
} else {
containerViewBot.center.x = self.view.center.x
containerViewBotBack.center.x = self.view.center.x - offset
}
} else {
if UIApplication.shared.statusBarOrientation.isLandscape {
containerViewBotBack.center.y = containedView.center.y
containerViewBot.center.y = containedView.center.y + offset
} else {
containerViewBotBack.center.x = self.view.center.x
containerViewBot.center.x = self.view.center.x + offset
}
}
}
我想知道如何在转换后调用此方法,
viewDidFinishTransition
或者在将窗口重新排列为新模式(横向/纵向)之后如何调用 resetPosition 方法。
解决方案
将您的 resetPositions() 放入协调器动画方法的完成块中。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: nil) { (context) in
resetPositions()
}
}
推荐阅读
- excel - 重新打开工作簿后 VBA 错误 13(类型不匹配)
- r - semi_join 根据多个 Y 列过滤 X 的列
- angular - 以角度处理多组件形式
- vba - Mapping table with multiple items
- laravel - Kubernetes 上的 Laravel - CronJob swift 550 5.7.1 中继被拒绝
- c# - 如何在使用 Polly 重试之前记录一些内容?
- c# - “IConfigurationBuilder”不包含“AddAzureAppConfiguration”的定义
- arduino - 如何使用 IMU 使 x 和 y 旋转独立
- python - 遍历方法列表?
- python - 页面存在但内容为 404 错误(想使用 Selenium 获取图像)