首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationItem动画

UINavigationItem动画
EN

Stack Overflow用户
提问于 2015-07-15 10:50:15
回答 1查看 557关注 0票数 0

我正在尝试为UINavigationItem创建自定义动画。我有4个条目的导航栏,但是当我向下滚动时,我想把搜索栏放在导航中。我想要动画自下而上,但我尝试的一切都不起作用。

下面是一些我试过的东西:

  • setLeftBarButtonItem:animated: (它正在工作,但它是干的--一点也不流动。有点像吉夫..。
  • UIView有:动画,延迟,选项,汉特,几乎所有的方法从UI为动画(根本不起作用)

我还应该注意,我有一个按钮和搜索栏在导航后滚动。

我的问题是-是否有可能改变默认的动画并制作自己的动画?如果是的话,我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-19 20:26:38

我不知道您到底想要做什么,但是您可以在leftBarButtonItem中放置一个自定义视图,并根据您的需要将其动画化(不过,您需要在视图中实现触摸处理).

根据需要的动画,您可以使用UIScrollView作为自定义视图,并根据视图滚动视图的contentOffset设置它的contentOffset (创建类似于Twitter在查看用户主页时使用的效果)。

我尝试了第一种方法(带有动画的自定义视图),它似乎运行得很好:

代码语言:javascript
复制
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:):

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31428341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档