我想重新定位导航栏的左右按钮,以便有三个,并且它们之间的间距相等。为此,我查看了以下问题以供参考:stackover flow - How to edit position of navigation bar button。我设法通过更改按钮框架的大小来自行解决,如下所示:
My Navigation Bar (Black and white boxes are buttons in the navigation bar)
但是,该帖子称如果我要打破HIG,那么我的应用程序将从应用商店中删除。所以我想知道这在多大程度上是正确的(因为我不必破坏Xcode即可实现我想要的功能),以及我现在拥有的东西是否安全。
这是我的代码:
viewDidLoad() {
let todolistButton = UIButton(type: .system)
todolistButton.backgroundColor = UIColor.black
todolistButton.frame = CGRect.init(x: 0, y: 0, width: (view.frame.width-50)/3, height: 44)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: todolistButton)
let scheduleButton = UIButton(type: .system)
scheduleButton.backgroundColor = UIColor.black
scheduleButton.frame = CGRect.init(x: 0, y: 0, width: (view.frame.width-50)/3, height: 44)
let calendarButton = UIButton(type: .system)
calendarButton.backgroundColor = UIColor.white
calendarButton.frame = CGRect.init(x: 0, y: 0, width: ((view.frame.width-50)/3)+2, height: 44)
navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: scheduleButton), UIBarButtonItem(customView: calendarButton)]
}
谢谢!
答案 0 :(得分:1)
通常,Apple实际上并不拒绝破坏HIG的应用程序。
但是,您的解决方案有一个问题:您在view.frame.width
中使用viewDidLoad
。当时视图的大小可能不正确。在viewWillLayoutSubviews
之前,您不能依靠视图的大小是正确的。