QuintGao / GKNavigationBarViewController

iOS自定义导航栏-导航栏联动
https://www.jianshu.com/p/577755d0d69a
MIT License
727 stars 130 forks source link

导航栏右边多按钮 在iOS10 及以下 多按钮展示不出来 #15

Closed 835932621 closed 5 years ago

835932621 commented 5 years ago

gk_navRightBarButtonItems 这个方法 设置后 模拟器上右边可以展示2个按钮 但是在真机上的时候 展示不出来 我的机型是10.3.3 另外用9.3的测试 也展示不出来

QuintGao commented 5 years ago

我这边没有低版本的测试机,没法测试。

huiyumiao commented 5 years ago

原因是你在 UINavigationItem 的分类中判断系统低于 iOS11 就添加一个宽度为 -20 的 fixedSpaceItem,那里的判断条件应该是 if (GKDeviceVersion >= 11.0 || GKDeviceVersion <= 10.0)

设置 navigationItem.leftBarButtonItemsnavigationItem.rightBarButtonItems 的方法也应该更新下

- (void)gk_setLeftBarButtonItems:(NSArray<UIBarButtonItem *> *)leftBarButtonItems {
    if (leftBarButtonItems.count && (GKDeviceVersion > 10.0 && GKDeviceVersion < 12.0)) {
        NSMutableArray *items = [NSMutableArray arrayWithObject:[self fixedSpaceWithWidth:GKConfigure.gk_navItemLeftSpace - 20]]; // 修复iOS11的偏移

        [items addObjectsFromArray:leftBarButtonItems];

        [self gk_setLeftBarButtonItems:items];
    }else {
        [self gk_setLeftBarButtonItems:leftBarButtonItems];
    }
}
- (void)gk_setRightBarButtonItems:(NSArray<UIBarButtonItem *> *)rightBarButtonItems {
    if (rightBarButtonItems.count && (GKDeviceVersion > 10.0 && GKDeviceVersion < 12.0)) {
        NSMutableArray *items = [NSMutableArray arrayWithObject:[self fixedSpaceWithWidth:GKConfigure.gk_navItemRightSpace - 20]]; // 可修正iOS11的偏移
        [items addObjectsFromArray:rightBarButtonItems];
        [self gk_setRightBarButtonItems:items];
    }else {
        [self gk_setLeftBarButtonItems:rightBarButtonItems];
    }
}

其实作者想解决的那个问应该只有在 iOS11 才有,低于或高于 iOS11 的版本都没有,所以烦请作者 update 下代码!

QuintGao commented 5 years ago

应该是以前版本代码的问题,最新版应该已经修复了该问题。

huiyumiao commented 5 years ago

没有吧,我就是用的最新的代码,你自己也可以试一下,用iOS10 的模拟器,在导航栏上添加一个 rightBarButtonItem 试试看。

QuintGao commented 5 years ago

最新版2.1.6,分别在iOS9.3,10.3.1,11.3,12.1上都测试过了,都没问题。

QuintGao commented 5 years ago

另外我添加了测试的demo,可以去看一下