iOS Swift 导航栏按钮向下移动

Posted

技术标签:

【中文标题】iOS Swift 导航栏按钮向下移动【英文标题】:iOS Swift Navigation Bar Buttons Shift Down 【发布时间】:2015-05-01 17:21:41 【问题描述】:

我使用以下代码将带有按钮的导航栏添加到我的视图中:

let navBar = UINavigationBar(frame: CGRectMake(0, 20, screenWidth, 44))
var homeButton : UIBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Bordered, target: controller, action: "closeView")
homeButton.image = UIImage(named: "back.png")
var item = UINavigationItem(title: title)
item.leftBarButtonItem = homeButton
if addPlus 
    var addButton : UIBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Bordered, target: controller, action: "addItem")
    addButton.image = UIImage(named: "plus-25.png")
    item.rightBarButtonItems = [addButton]




var items = [
    item
]


navBar.setItems(items, animated: true)

controller.view.addSubview(navBar)

由于某种原因,当显示任何类型的 UIAlertView 时,栏上的按钮会向下移动。

任何想法为什么会发生这种情况?

【问题讨论】:

您是否将视图包含在 Navigationcontroller 中? 对我来说也一样。它只发生在我使用代码创建的右栏按钮项上(即 viewDidLoad 中的 setRightBarButtonItems)。左栏按钮项目不会向下移动,并且是使用界面生成器创建的。所以它似乎与自定义栏按钮项有关。 【参考方案1】:

在您的故事板中,带上一个导航栏并使其自动适应屏幕,不要尝试将其向下移动。

【讨论】:

【参考方案2】:

不是最好的解决方案,但由于这种行为只发生在我的自定义栏按钮项(而不是我使用界面生成器制作的栏按钮项)上,我只是用“self.navBarNavItem.setRightBarButtonItems([], animated : true)" 在调用“presentViewController”之前。

然后,如果警报的结果(即用户选择的内容)导致停留在当前视图上(而不是更改视图),那么我在执行该处理程序时将它们重新添加。

这会阻止按钮明显显示在错误的位置,然后在警报完成后将它们放回正确的位置。

【讨论】:

以上是关于iOS Swift 导航栏按钮向下移动的主要内容,如果未能解决你的问题,请参考以下文章

不在导航栏上制作栏按钮项目和标题(iOS,Swift)

Swift - 修改导航栏“返回”按钮文字,图标

如何强制显示移动 Safari 底部导航栏以编程方式显示?

iOS - 通过动画将搜索栏从中心移动到导航栏下方(Swift)

在导航栏中自动添加“返回”按钮

在 iOS 11 中使用大标题时调整栏按钮项的位置