我正在尝试为UINavigationItem创建自定义动画。我有4个条目的导航栏,但是当我向下滚动时,我想把搜索栏放在导航中。我想要动画自下而上,但我尝试的一切都不起作用。
下面是一些我试过的东西:
setLeftBarButtonItem:animated: (它正在工作,但它是干的--一点也不流动。有点像吉夫..。我还应该注意,我有一个按钮和搜索栏在导航后滚动。
我的问题是-是否有可能改变默认的动画并制作自己的动画?如果是的话,我怎样才能做到这一点呢?
发布于 2015-07-19 20:26:38
我不知道您到底想要做什么,但是您可以在leftBarButtonItem中放置一个自定义视图,并根据您的需要将其动画化(不过,您需要在视图中实现触摸处理).
根据需要的动画,您可以使用UIScrollView作为自定义视图,并根据视图滚动视图的contentOffset设置它的contentOffset (创建类似于Twitter在查看用户主页时使用的效果)。
我尝试了第一种方法(带有动画的自定义视图),它似乎运行得很好:
class itemView : UIView {
var active : Bool {
set {
UIView.animateWithDuration(1, animations: {
if newValue {
self.backgroundColor = UIColor.greenColor()
self.transform = CGAffineTransformMakeRotation(3.1415/2)
} else {
self.backgroundColor = UIColor.redColor()
self.transform = CGAffineTransformMakeRotation(-3.1415/2)
}
})
}
get {
if let color = backgroundColor {
return color.isEqual(UIColor.greenColor())
}
return false
}
}
}然后,我像这样使用它(我用一个简单的事件处理程序(从rightBarButtonItem链接)来改变活动状态,但是您可以在这里使用任何东西,包括scrollViewDidScroll:):
let item = itemView(frame: CGRectMake(0, 0, 30, 20))
override func viewDidLoad() {
super.viewDidLoad()
item.active = false
self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(customView: item), animated: false)
}
@IBAction func itemClicked(sender: UIBarButtonItem) {
item.active = !item.active
}https://stackoverflow.com/questions/31428341
复制相似问题