ios - 从左侧滑动 UIBarButtonItem

标签 ios swift animation uibarbuttonitem uinavigationitem

当转到二级页面时,我试图在 0.33 秒的时间内从左侧滑入后退按钮。现在动画似乎并没有这样做,即使在将持续时间减慢到 2 秒以进行视觉澄清之后也是如此。想知道是否有人可以告诉我我在代码中做错了什么以及如何更正它?

出来说我可能只是误解了动画的某些方面是如何工作的。

func addBackButton() {
        let backButton = UIButton(type: .custom)
        backButton.setImage(#imageLiteral(resourceName: "backArrow"), for: .normal)
        backButton.setTitle("", for: .normal)
        backButton.setTitleColor(backButton.tintColor, for: .normal)
        backButton.addTarget(self, action: #selector(backAction), for: .touchUpInside)
        let backBarButtonItem = UIBarButtonItem(customView: backButton)
        backBarButtonItem.customView?.transform = CGAffineTransform(translationX: -backButton.frame.width, y: 0)
        navigationItem.leftBarButtonItems?.insert(backBarButtonItem, at: 0)
        UIView.animate(withDuration: 2, delay: 0.5, animations: {
            backBarButtonItem.customView?.transform = CGAffineTransform(translationX: 2 * backButton.frame.width, y: 0)
        })
    }

最佳答案

您只需将此自定义按钮放入 containerView 并将该 containerView 设置为 UIBarButtonItem 的 自定义 View 。您的设置将如下所示,

let containerFrame = CGRect(origin: .zero, size: CGSize(width: 44.0, height: 44.0))
let container = UIView(frame: containerFrame)

let buttonFrame = CGRect(origin: CGPoint(x: -100, y: 0), size: CGSize(width: 44, height: 44))  
let backButton = UIButton(frame: buttonFrame)
backButton.setImage(#imageLiteral(resourceName: "backArrow"), for: .normal)
backButton.setTitle("", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
backButton.addTarget(self, action: #selector(backAction), for: .touchUpInside)
container.addSubview(backButton)

let backBarButtonItem = UIBarButtonItem(customView: container)
UIView.animate(withDuration: 2, delay: 0.5, animations: {
    backButton.transform = CGAffineTransform(translationX: 2 * backButton.frame.width, y: 0)
})

您可以检查为什么需要将自定义 button 包装在另一个 UIViewhere .

关于ios - 从左侧滑动 UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769272/

相关文章:

ios - 如何将按钮的隐藏状态保存为 NSUserDefault?

iphone - 如何在 iphone 应用程序中实现图像翻转动画

ios - 在 Swift 中动画绘制圆圈的奇怪问题

ios - 如何将现有对象保存到 Core Data

iOS-在数据添加到数组后让 Segue 执行 (Swift)

wpf - 是否有显示虚拟人的库 [WPF]

ios - Twitter.sharedInstance().APIClient 为零

c# - uiimageview ios Xamarin C#上的click事件

ios - APNS 推送通知不适用于生产

swift - 无法将类型 '(_) -> ()' 的值转换为预期的参数类型 'Date'