【问题标题】:Changing the leading and trailing margins for a UINavigationBar更改 UINavigationBar 的前导边距和后边距
【发布时间】:2018-05-06 21:25:08
【问题描述】:

有没有办法改变由 UINavigationController 控制的 UINavigationBar 的前导和后边距?我正在使用自定义界面,这将有助于在左右两侧为后退和完成按钮留出更多空间。

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationbar


    【解决方案1】:

    您可以在导航控制器上更改导航框架

    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)
        }
    }
    

    【讨论】:

      【解决方案2】:

      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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-10
        • 2017-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 2020-10-29
        • 1970-01-01
        相关资源
        最近更新 更多