更新到Xcode 11后,CGAffineTransform转换在选项卡上不起作用

时间:2019-10-02 10:18:55

标签: swift ios13 cgaffinetransform xcode11

我正在尝试将项目更新到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
    }

1 个答案:

答案 0 :(得分:0)

我知道这可能会晚了,但对于寻找此答案的其他用户可能会有所帮助。 要将标签栏平移到右/左/上/下,您需要更改其原点。因此,代替此行:

self.tabBarController?.tabBar.transform = CGAffineTransform(translationX: 0, y: 100)

您应该将其更改为此行:

self.tabBarController?.tabBar.frame.origin.y += 100

当然,您可以更改值100以适合您的需要,此行会将标签栏移到底部,如果您希望将其移到顶部,则需要这样做:

self.tabBarController?.tabBar.frame.origin.y -= 100

很显然,如果您想更改x位置,则可以将.y更改为.x。