【问题标题】:UINavigationItem animationUINavigationItem 动画
【发布时间】:2015-07-15 10:50:15
【问题描述】:

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

这是我尝试过的一些东西:

  • setLeftBarButtonItem:animated:(它正在工作,但它很生涩 - 一点也不流畅。有点像 gif...
  • UIView 带有:动画、延迟、选项、处理程序,几乎所有来自 UI 的动画方法(根本不起作用)

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

我的问题是 - 是否可以更改默认动画并自己制作?如果是这样,我该如何实现?

【问题讨论】:

  • 有点难以理解您想要实现的目标。请您添加一些您想要的屏幕截图或插图。另外,发布您尝试过的代码。
  • 我这里没有mac所以不能给你看代码,但是我想要实现的很简单。在按钮单击、滚动或任何其他事件时,我想使用自定义动画更改导航栏元素

标签: ios swift


【解决方案1】:

我不确定我是否完全理解您要执行的操作,但您可以将自定义视图放入 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多