zoukankan      html  css  js  c++  java
  • 自定义TabBar

    1.ios之UITabBarItem显示真实自定义的图片而非颜色填充

          让TabBarItem 显示出我们设置的图片的真实样子,需要看以下设置方法在继承自UITabBarControll的CustomTabBarControll的viewdidload方法中,拿到所有的item然后统一设置成自定义的图片分别是选中和未选中,针对ios7以后

    _tabBarController = [[UITabBarController alloc]init];
        [_tabBarController setViewControllers:@[recNav,feedNav,postNav,loginNav]];
        // 拿到 TabBar 在拿到想应的item
        UITabBar *tabBar = _tabBarController.tabBar;
        UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
        UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
        UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
        UITabBarItem *item3 = [tabBar.items objectAtIndex:3];
        // 对item设置相应地图片
        item0.selectedImage = [[UIImage imageNamed:@"recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
        item0.image = [[UIImage imageNamed:@"recognize"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
         
        item1.selectedImage = [[UIImage imageNamed:@"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
        item1.image = [[UIImage imageNamed:@"life"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
         
        item2.selectedImage = [[UIImage imageNamed:@"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
        item2.image = [[UIImage imageNamed:@"edit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
         
        item3.selectedImage = [[UIImage imageNamed:@"setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
        item3.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

          有的时候会出现图片下面有一块空白的情况,解决办法是:设置uibaritem 的 imageInsets, top和bottom 一一对应 比如

        [item1 setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];

    2.隐藏原有的TabBar,使用UIView完全重新定义TabBar,

         这样的好处就是,定制化的程度很高,而且很多东西可以完全推倒重来,但是有一个很严重的问题,当使用

    viewController.hidesBottomBarWhenPushed = YES的时候,还是无法隐藏UITabBar,这个始终无法隐藏,除非采用自定制的动画移开这个UIView或者设置

    这个为Hidden, 最重要的问题也在这里, 所以采用隐藏原有的TabBar的方式之后很多人抱怨无法通过viewController.hidesBottomBarWhenPushed = YES

    来隐藏TabBar,网上有很多类似的代码,我这里就不贴源代码了,问题已经分析出来了。

    网易新闻的iOS客户端就是这样的方式实现的,有一点点小的瑕疵

    还有一种类型的TabBar可以使用这样的方式来实现,上截图

    这个就完全是重写了TabBar,而且和以前的系统原生的没有任何关系了,但是用的不多。

  • 相关阅读:
    等保测评(一)
    一个基于RNN的实体抽取工具
    如何画UML类图
    mysql存储过程整理
    记一次mysql事务未提交导致锁未释放的问题
    开启·元宇宙·区块链金融
    Nacos启动报错:[db-load-error]load jdbc.properties error
    使用Bazel编译TypeScript
    Win10上Docker无法正常启动 出现install WSL2 kernel update的情况
    VSCode调试PHP环境配置 phpstudy vscode xdebug调试
  • 原文地址:https://www.cnblogs.com/tangaofeng/p/5326255.html
Copyright © 2011-2022 走看看