原 ios12.1 tabBar 中的图标及文字出现位置偏移动画(push和pop回来)tabBar上的图标和文字出现一个从上往下跳动

本文解决iOS12.1Beta2中,使用UINavigationController+UITabBarController时,push界面返回时tabBar出现布局错乱及神秘动画的问题。通过调整UITabBar的translucent属性,避免了hidesBottomBarWhenPushed=YES时的手势返回异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自: https://blog.youkuaiyun.com/longge_li/article/details/83654333 

昨天更新12.1之后,发现app 首页push一个界面,返回的时候,tabBar上的图标和文字出现一个从上往下的神奇动画,惊呆了?!
经过测试发现,如果使用系统OS12.1 UINavigationController + UITabBarController( UITabBar 磨砂),在popViewControllerAnimated 会遇到tabbar布局错乱的问题:
 

//下面的push方法可以不加(本人没有起作用)


- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
   
   if (self.childViewControllers.count > 0) {
       //如果没这行代码,是正常显示的
       viewController.hidesBottomBarWhenPushed = YES;
   }
   
   [super pushViewController:viewController animated:animated];

}

//**下面方案解决了我的问题

[UITabBar appearance].translucent = NO;

这个问题是 iOS 12.1 Beta 2 引入的问题,只要 UITabBar 是磨砂的,并且 push viewController 时 hidesBottomBarWhenPushed = YES 则手势返回的时候就会触发,出现这个现象的直接原因是 tabBar 内的按钮 UITabBarButton 被设置了错误的 frame,frame.size 变为 (0, 0) 导致的。


--------------------- 
作者:龙哥_love 
来源:优快云 
原文:https://blog.youkuaiyun.com/longge_li/article/details/83654333 
版权声明:本文为博主原创文章,转载请附上博文链接!

在 UniApp 中,要实现 TabBar 上的切换效果,当切换到不同页面时改变图标文字的颜色,并保持一致性,你可以通过监听 `pageChange` 事件并在对应的页面组件中设置样式。这里是一个简单的示例: 首先,在 App.vue 或者全局样式文件(如 app.wxss)中,创建一个变量存储你的主题颜色: ```html <!-- App.vue 或 app.wxss --> <template> <view ref="tabBarWrapper" :style="{ color: tabBarItemColor }">...</view> <!-- 根据实际标签栏容器选择 --> </template> <style scoped> @global { --my-color: #007aff; // 可替换为你想用的主题颜色,默认蓝色 } </style> ``` 然后在每个页面组件的 data 中,维护一个状态来表示当前选中页面: ```javascript // pageA.vue 或 pageB.vue export default { data() { return { currentPage: 'pageA', // 初始化为第一个页面名 }; }, onShow() { this.currentPage = this.$options.name; }, }; ``` 接着,在每个页面组件里监听 `pageChange` 事件,更新主题颜色: ```javascript // 在每个页面组件中 created() { uni.onPageChange(this.handlePageChange); }, beforeDestroy() { uni.offPageChange(this.handlePageChange); }, methods: { handlePageChange(page) { if (page === this.$options.name) { // 当前页发生变化时,更新颜色 this.tabBarItemColor = page === 'pageA' ? '--my-color' : 'black'; // 如果你想文字变黑,可以换成 'black' } }, }, ``` 这样,当用户从一个页面切换到另一个页面时,TabBar图标文字会根据 `currentPage` 的值动态更改颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值