OGeek|极客世界-中国程序员成长平台

标题: ios - UIBarButtonItem 错误地沿栏设置动画? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 13:50
标题: ios - UIBarButtonItem 错误地沿栏设置动画?

我正在尝试做一件简单的事情:在导航栏的右侧添加一个 UIBarButtonItem。看起来很简单:

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

但是当调用该方法时,发生了一件奇怪的事情:按钮从栏的左侧一直滑动。

右栏按钮不仅仅出现在右侧,而是出现在最左侧,快速滑过整个导航栏(在中间的标题下方),然后在右侧位置减速停止。从那时起,它完全按预期工作。

听起来很简单,但我无法让右栏按钮停止像这样滑入。我尝试将 animated:NOanimated:YES 添加到 setRightBarButtonItem: 方法中,但均无效。无论左侧是否有 UIBarButtonItem,都会发生这种情况。我试过使用 setRightBarButtonItems[button],但幻灯片动画没有改变。

有谁知道如何在导航栏的右侧添加一个简单的 UIBarButtonItem 而不会从侧面滑入?



Best Answer-推荐答案


您以某种方式将 setRightBarButtonItem 嵌入到某种动画中。
如果您非常仔细观察,您会注意到它实际上并不是按照说法从左到右,而是从 (0, 0)(大小为 (0, 0))到其最终静止位置和尺寸。 navigationItem 在动画中被劫持。

为了说服自己,你可以运行这个简单的代码片段:

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

关于ios - UIBarButtonItem 错误地沿栏设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025416/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4