【发布时间】:2018-12-31 03:09:20
【问题描述】:
我想创建一个类似于 iOS app facebook at tabswitch[1] 的动画。我已经尝试开发某种动画,出现的问题是旧视图控制器直接在开关上变得不可见,而不是在新控制器快速滑入时缓慢淡出。
我发现了这个 SO 问题How to animate Tab bar tab switch with a CrossDissolve slide transition?,但标记为正确的解决方案对我来说并不适用(它不是幻灯片,而是淡入淡出过渡)。我还想获得的是向左或向右滑动以切换标签的功能。就像在旧版本的 facebook 上一样。
到目前为止,我得到的是这样的:
extension TabBarController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let fromView = selectedViewController?.view,
let toView = viewController.view else { return false }
if fromView != toView {
toView.transform = CGAffineTransform(translationX: -90, y: 0)
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
toView.transform = CGAffineTransform(translationX: 0, y: 0)
})
}; return true
}
}
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
}
如何解决这个问题?
[1] 我非常想从 Facebook 应用程序中添加一个 gif。问题是我不想审查视频而只是透露太多我的数据。 (即使 fb 已经有它们)。同样在 youtube 上,我没有找到合适的录音。请在 iOS 的 fb 应用中自行尝试。
【问题讨论】:
-
那为什么你提到的答案不适合你?
-
这是一个使用
UIViewControllerAnimatedTransitioning的要点:gist.github.com/dsoike/caa34a2605306f28c3061efc4920ba13
标签: swift facebook animation uiviewcontroller tabbar