【发布时间】:2018-05-06 21:25:08
【问题描述】:
有没有办法改变由 UINavigationController 控制的 UINavigationBar 的前导和后边距?我正在使用自定义界面,这将有助于在左右两侧为后退和完成按钮留出更多空间。
【问题讨论】:
标签: ios uinavigationcontroller uinavigationbar
有没有办法改变由 UINavigationController 控制的 UINavigationBar 的前导和后边距?我正在使用自定义界面,这将有助于在左右两侧为后退和完成按钮留出更多空间。
【问题讨论】:
标签: ios uinavigationcontroller uinavigationbar
您可以在导航控制器上更改导航框架
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)
}
}
【讨论】:
stackoverflow 上有很多关于此的问题。在 iOS
在 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);
}
}
【讨论】: