这里有个界面,右边有两个navigationItem,这里虽然把第一个item的图片位置向右调整了,但实际上的位置仍然没有改变(看图中那个蓝色的框),然后在网上找了下关于titleView居中的解决方案,结果发现基本上都是titlelabel上文字未居中。。。
查了相关资料,titleView是NavigationBar接管的,所以你在里面设置origin坐标是没有用的,所以segmentControl确实是被左边的item强行挤过去的,那么解决方案就是减少左边Item的宽度,这里是换用
UIBarButtonItem
的customView
,代码如下:
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,测试不会影响正常使用,同时实现间距调整。效果图: