2016-01-26 87 views
1

我正在尝试做一件简单的事情:在navBar的右侧添加一个UIBarButtonItem。似乎是一件容易的事:UIBarButtonItem沿着酒吧错误地动画?

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStylePlain target:self action:@selector(buttonTapped)]; 
[self.navigationItem setRightBarButtonItem:button]; 

但是,当方法被调用,奇怪的事情发生了:按钮从酒吧的左侧滑入了一路。

右边的条形按钮不是出现在右侧,而是出现在最左边,快速滑过整个导航栏(在中间的标题下),然后慢慢地停在右侧位置。从那里开始,它完全按照预期工作。

听起来很简单,我无法得到正确的按钮来停止滑动像这样。我已经尝试将animated:NOanimated:YES添加到setRightBarButtonItem:方法中,两种方法都没有任何影响。它发生在左侧是否有UIBarButtonItem。我试过使用setRightBarButtonItems:@[button],但幻灯片动画没有改变。

有谁知道我可以如何添加一个简单的UIBarButtonItem到我的导航栏的右侧,而不从侧面滑入?

+0

内幕:

为了说服自己,你可以运行这个简单的代码片段? ('viewDidAppear:animated' or similar? – SwiftArchitect

+0

你是怎么解决你的问题的?下面的答案是不是在描述你正在经历的事情? – SwiftArchitect

回答

1

你有某种方式嵌入setRightBarButtonItem在各种动画。
如果你仔细看非常,你会发现它实际上并不是从左到右,而是从(0,0)大小为(0,0)到其最终的静止位置和尺寸。 navigationItem在动画中被劫持为人质。你调用`setRightBarButtonItem`哪种方法

func buttonTapped() { 
    UIView.animateWithDuration(5) {() -> Void in 
     let button = UIBarButtonItem(title: "Button", 
            style: .Plain, 
            target: self, 
            action: "buttonTapped") 
     self.navigationItem .setRightBarButtonItem(button, animated: false) 
    } 
} 

演示

Animation demonstation