lixiang1994 / LEETheme

优雅的主题管理库- 一行代码完成多样式切换
MIT License
820 stars 135 forks source link

self.navigationController.navigationBar.lee_theme 不能立即生效, #24

Open Arise903 opened 4 years ago

Arise903 commented 4 years ago

@interface NewHotLineViewController : WMPageController h文件

以下是m文件 更改theme以后,下面的设置不能立即生效,需要左右滑动几次才能生效 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:NO animated:YES];

self.navigationController.navigationBar.lee_theme
.LeeAddCustomConfig(DAY , ^(UINavigationBar *item){
    [item setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forBarMetrics:UIBarMetricsDefault];
    item.barStyle = UIBarStyleDefault;
})
.LeeAddCustomConfig(NIGHT , ^(UINavigationBar *item){
    [item setBackgroundImage:[UIImage imageWithColor:RGBColor(55, 55, 55)] forBarMetrics:UIBarMetricsDefault];
    item.barStyle = UIBarStyleBlack;
});
lixiang1994 commented 4 years ago

左右滑动是 导航栏的侧滑返回手势吗?

Arise903 commented 4 years ago

是的

lixiang1994 commented 4 years ago

这和你直接在 -(void)viewWillAppear:(BOOL)animated中 设置

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:RGBColor(55, 55, 55)] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

是相同的. 只不过会在主题发送变化时 再次出发block.

你似乎没有理解它的运行机制,

yanmingLiu commented 3 years ago

我这里是在基类的navc里面处理系统导航栏返回按钮的主题,问题出现在iOS12 iOS11上的在选择主题VC页面切换主题后返回按钮无法生效,不知道是不是系统导航栏的bug, 反正系统的导航栏始终有很多顽疾。我的处理方式是在选择主题页面隐藏系统导航写一个view去替换。

基类navc代码如下:

@implementation XXNavigationController

lixiang1994 commented 3 years ago

你可以在block中打断点 确认一下切换后 是否执行了block中的代码, 如果执行了说明库本身没问题, 可能是系统导航栏的问题

yanmingLiu commented 3 years ago

你可以在block中打断点 确认一下切换后 是否执行了block中的代码, 如果执行了说明库本身没问题, 可能是系统导航栏的问题

block会执行2次,返回的主题tag也是正确的,iOS13以上也是没有问题的,可以确定的是库本身是没有问题的,系统导航栏确实很多问题,特别是针对中国特色设计。