有没有办法更改由UINavigationController控制的UINavigationBar的前导和尾随边距?我使用自定义界面,这将有助于在后面和完成按钮的左侧和右侧留出更多空间。
答案 0 :(得分:0)
您可以更改导航控制器上的导航框架
class NavigationController: UINavigationController {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let space = 30
self.navigationBar.frame = CGRect(x: CGFloat(space), y: 0, width: self.navigationBar.frame.size.width-CGFloat(space*2), height: self.navigationBar.frame.size.height)
}
}
答案 1 :(得分:0)
在stackoverflow上有关于此问题的无数问题。在iOS< 11上,添加负间隔按钮可以正常工作。
在iOS 11上,调整[_UINavigationBarContentView directionalLayoutMargins]
以返回零值会删除左/右项周围的任何尾随填充:
NSDirectionalEdgeInsets zeroMargins(id self, SEL _cmd) {
return NSDirectionalEdgeInsetsMake(0, 0, 0, 0);
}
- (void) doIt {
Class cl = objc_getClass("_UINavigationBarContentView");
if (cl != nil) {
method_setImplementation(class_getInstanceMethod(cl, @selector(directionalLayoutMargins)), (IMP)zeroMargins);
}
}