子控制器tabBarItem底部选中图片显示为自己配置的 不让系统渲染

大环境是在tabBarController底部的各个子控制器的显示tabBarItem图片 问题

UIViewController* vc = [UIViewcontroller alloc]init];

vc.tabBarItem.image = [UIImage imageNamed@"图片1"];

vc.tabBarItem.selectedImage = [UIImage imageNamed@"图片2"];

这样直接写的话,在iOS7中不会显示真正的图片2,因为在iOS7中会再次将图片2渲染为蓝色(有时这个挺好看的,但是如果UI什么的非要改,你只能打他改了哈)

所以要想 显示原图,必须做如下操作,告诉他不要 渲染


UIImage * selectedImage  = [UIImage imageNamed@"图片2"];

afterSelectedImage     = [selectedImage imageWIthRenderMode:uiimageRenderingModeAlwaysDrig];

vc.tabBarItem.selectedImage = afterSelectedImage;

因为调用imageWithRenderMode会返回一张新图片,所以要用afterSlectedImage接收,这样就OK了

不过还有一个小问题大家要注意,这个imageWithRenderMode是在iOS7环境之后可以用,iOS6没有这个方法,因此要做一个判断,iOS6不用做此操作就可以,

不做判断会报错'[UIImage imageWithRenderingMode:]unrecognized selector sent to instance '

 顺便说一下 因为是在windows上手写的代码,没有xcode,写的真累,大小写有些没区分 大家见谅

UniApp小程序中的底部TabBar设置成选中时只显示图标不显示文字,可以通过自定义组件和配置选项来实现。以下是基本步骤: 1. **创建自定义TabBarIcon组件**: 首先,在项目的components文件夹下创建一个新的文件夹,例如`custom-tabbar`,然后在其中创建一个名为`CustomTabBarItem.vue`的文件,内容大致如下: ```html <template> <view :class="{ selected: index === $route.meta.tabIndex }"> <image v-if="showText" :src="iconUrl" :class="selected && 'selected'" /> <text v-else>{{ iconLabel }}</text> </view> </template> <script> export default { name: 'CustomTabBarItem', props: { index: Number, iconUrl: String, iconLabel: String, selectedColor: String, normalColor: String }, computed: { showText() { return this.$route.meta.showLabel ? true : false; } }, methods: { onTabClick(e) { // 根据需要添加点击事件处理 } } } </script> <style scoped> .selected { color: {{ selectedColor || '#000' }}; } .normal { color: {{ normalColor || '#666' }}; } </style> ``` 2. **在App.json中配置底部TabBar**: 在`App.json`中,将默认的TabBar替换为你新创建的自定义组件,并设置`show-label`属性来控制是否显示文字: ```json { "pages": ["index/index"], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "uni-app", "navigationBarTextStyle": "black", "tabBar": { "color": "#666", "borderStyle": "#ddd", "list": [ { "pagePath": "index/index", "text": "", "iconPath": "@/custom-tabbar/icon1.png", "selectedIconPath": "@/custom-tabbar/icon1_selected.png", "showLabel": false }, ...其他配置项... ] } } } ``` 这里的`showLabel`属性设为`false`表示不显示文字。 3. **更新图标和文字样式**: 在自定义组件中,你可以根据`$route.meta.tabIndex`判断当前选中状态,改变文本颜色、图标路径等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值