【发布时间】:2019-10-02 10:18:55
【问题描述】:
我正在尝试将我的项目更新到 iOS 13。 我曾经使用 CGAffineTransform 翻译来隐藏选项卡栏,它就像一个魅力,直到我更新到 Xcode 11 并在 iOS 13 上执行我的代码。
我尝试用一个简单的 UITabBarController 和一个简单的 UIViewController 重新创建一个小项目,并带有一个按钮来显示/隐藏我的标签栏。 (见下文)。
即使是身份转换也无法按预期进行。
其他 CGAffineTransform 像预期的那样旋转炒锅。
@objc fileprivate func showOrHideTabbar() {
if !hidden {
print("hiding")
UIView.animate(withDuration: 0.7, delay: 0, options: .curveEaseOut, animations: {
self.tabBarController?.tabBar.transform = CGAffineTransform(translationX: 0, y: 100)
})
} else {
print("showing")
UIView.animate(withDuration: 0.7, delay: 0, options: .curveEaseOut, animations: {
self.tabBarController?.tabBar.transform = .identity
})
}
hidden = !hidden
}
【问题讨论】:
-
就我个人而言,我从未发现使用转换来可靠地隐藏 tabBar。我找到了适合我的扩展。 stackoverflow.com/a/44707169/5508175。它确实适用于 iOS 13
-
谢谢,阅读这篇文章帮助我找到了另一种用动画隐藏它的方法。我现在修改框架以添加偏移量: let frame = self.tabBarController!.tabBar.frame self.tabBarController!.tabBar.frame = frame.offsetBy(dx: 0, dy: 100) 它就像那样工作,但我仍然试图理解为什么 CGAffineTransform 不再起作用。
-
我在更新到 Xcode 11 后遇到了同样的问题,据我调查,这个问题看起来像是标签栏框架的高度在它离开屏幕时被修改了,但我从未听过苹果说要修改 iOS 12关于这个话题的行为:/
-
对我来说也是同样的问题,相同的代码在 iOS 12 中运行时工作,但在 iOS 13 中运行时不工作。可能是因为 ios 13 窗口层次结构而发生的。
标签: swift ios13 cgaffinetransform xcode11