【发布时间】:2017-03-15 13:42:51
【问题描述】:
我正在返回“旧”xcode 7 / swift 2 项目。
我所有的导航栏都发生了一些奇怪的事情。
我有这样的代码:
@IBOutlet weak var outletCatalogNav: UINavigationItem!
//...
outletCatalogNav.title = "my title";
//...
outletCatalogNav.leftbarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ownCatalogBackButton));
//...
if (outletCatalogNav.leftbarButtonItem != nil) {
outletCatalogNav.leftbarButtonItem.leftBarButtonItem!.title = " back"
}
然后以这样的代码结束,用于切换视图:
TmpOldViewController.present(TmpNewViewController!, animated: TmpAnimate, completion: nil):
信息:由于历史原因,当 iOS 应用代码从完全不同的开发平台、语言和环境转换而来时,我自己处理视图控制器更改。
无论如何,在过去,按钮只会放在标题的左侧。现在在 ios10 模拟器中,至少它呈现在下方(但仍然在左侧),这意味着我用于导航栏的原始高度不再足够(因为它被其他控件覆盖) - 在下面的屏幕截图中你可以看到这带有左下角蓝色文本的提示。
约束是:
Navigation Bar.top = Top Layout Guide.bottom
TableViewCatalog.top = Navigation Bar.bottom
Navigation Bar.leading = leadingMargin - 20
trailingMargin = Navigation Bar.trailing - 20
发生了什么变化?我无法找到导航栏中发生的任何更改的参考。作为参考,自从改用swift 3后,我现在只针对ios8+,所以我不需要ios7兼容的解决方案。
【问题讨论】:
-
你用的是独立的导航栏,那么(意思是只有导航栏,没有导航控制器)?
-
@leanne 是的 - 我添加了更多代码和解释以防万一。
-
另外几个问题:1)导航栏还有哪些其他限制? 2) 在实际设备上运行时它会做同样的事情吗?
-
@leanne Navigation Bar.top = Top Layout Guide.bottom 和 TableViewCatalog.top = Navigation Bar.bottom(今天晚些时候将在 iphone 6 上测试,在 ios8+ 要求之后不得不放弃我的测试 iphone 4 所以目前使用模拟器)
-
尝试通过创建一个全新的
UIBarButtonItem来替换.title = "back"。我认为计算条形按钮项的框架的方式发生了一些变化。