关于UINavigationItem的TitleView居中的问题

这里有个界面,右边有两个navigationItem,这里虽然把第一个item的图片位置向右调整了,但实际上的位置仍然没有改变(看图中那个蓝色的框),然后在网上找了下关于titleView居中的解决方案,结果发现基本上都是titlelabel上文字未居中。。。


  查了相关资料,titleView是NavigationBar接管的,所以你在里面设置origin坐标是没有用的,所以segmentControl确实是被左边的item强行挤过去的,那么解决方案就是减少左边Item的宽度,这里是换用UIBarButtonItemcustomView,代码如下:

    let btn = UIButton(type: .Custom)
    btn.frame = CGRectMake(0, 0, 30, 44)
    btn.setImage(UIImage(named: "offline_folder"), forState: .Normal)
    btn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -30)
    btn.addTarget(self, action: #selector(NewRecordViewController.offlineItemAction(_:)), forControlEvents: .TouchUpInside)
    let offlineItem = UIBarButtonItem(customView: btn)
    let moreItem = UIBarButtonItem(image: UIImage(named: "circleItemMore"), style: .Plain, target: self.downloadVC, action: #selector(OfflineDownloadListViewController.onEdit))
     
    self.navigationItem.rightBarButtonItems = [moreItem, offlineItem]

这里把宽度改为30,测试不会影响正常使用,同时实现间距调整。效果图:

修改后

推荐阅读更多精彩内容