-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
配置表的 TabBarItemImageColor 会覆盖 UIImageRenderingModeAlwaysOriginal 的 image #736
Labels
Comments
这是个问题,我们看看,多谢指出。 |
已在内部版本修复,下个版本会带上,在此之前你可以将以下代码替换本地的 UITabBar+QMUI.m 文件中的对应代码。 OverrideImplementation([UITabBar class], @selector(setItems:animated:), ^id(__unsafe_unretained Class originClass, SEL originCMD, IMP (^originalIMPProvider)(void)) {
return ^void(UITabBar *selfObject, NSArray<UITabBarItem *> *items, BOOL animated) {
// 应用配置表样式
[items enumerateObjectsUsingBlock:^(UITabBarItem * _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop) {
if (QMUICMIActivated) {
if (@available(iOS 13.0, *)) {
// iOS 13 通过 appearance 的方式修改,具体请查看 QMUIConfiguration.m
} else {
UIImage *image = item.image;
if (image.renderingMode != UIImageRenderingModeAlwaysOriginal) {
if (TabBarItemImageColor) {
image = [[image qmui_imageWithTintColor:TabBarItemImageColor] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];// 如果不强制指定 original,系统总是会以 template 的方式渲染,并且颜色也是系统默认的灰色,无法改变
item.image = image;
}
}
}
}
}];
// call super
void (*originSelectorIMP)(id, SEL, NSArray<UITabBarItem *> *, BOOL);
originSelectorIMP = (void (*)(id, SEL, NSArray<UITabBarItem *> *, BOOL))originalIMPProvider();
originSelectorIMP(selfObject, originCMD, items, animated);
[items enumerateObjectsUsingBlock:^(UITabBarItem * _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop) {
// 双击 tabBarItem 的功能需要在设置完 item 后才能获取到 qmui_view 来实现
UIControl *itemView = (UIControl *)item.qmui_view;
[itemView addTarget:selfObject action:@selector(handleTabBarItemViewEvent:) forControlEvents:UIControlEventTouchUpInside];
}];
};
}); |
MoLice
changed the title
关于UITabBar+QMUI.m里处理tab bar image的一个建议
配置表的 TabBarItemImageColor 会覆盖 UIImageRenderingModeAlwaysOriginal 的 image
Sep 29, 2019
多谢 本地已替换 |
已发布 4.0.2 修复该问题。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
现存问题:
在想使用图片默认颜色而不设置TabBarItemImageColor的情况下,在UITabBar+QMUI.m文件里的line63-67,会把image的RenderingModel(我设置了UIImageRenderingModeAlwaysOriginal)强制改为UIImageRenderingModeAutomatic
期望目标:
在TabBarItemImageColor为空的条件下,不做任何处理是否合理一点?
The text was updated successfully, but these errors were encountered: