zoukankan      html  css  js  c++  java
  • OC

    系统默认是 蓝色。但是当 tabbarItem的 选中图标改成了 灰色后,我们也希望把 文字改成 灰色。这个时候就用到了“

    setTitleTextAttributes” 方法。

    可以在  “ UITabBarItem ” 类的父类 “ UIBarItem ” 类中找到下面这个方法:

    /* You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in NSAttributedString.h.

     */

    - (void)setTitleTextAttributes:(nullable NSDictionary<NSString *,id> *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

    这个方法是用来改变 文字的颜色。 可以在 “NSAttributedString.h” 类中找到 Keys.

        // 默认
        NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
        attrs[NSFontAttributeName] = [UIFont systemFontOfSize:12];
        attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
        [essenceVC.tabBarItem setTitleTextAttributes:attrs forState:UIControlStateNormal];
        
        // 选中
        NSMutableDictionary *attrSelected = [NSMutableDictionary dictionary];
        attrSelected[NSFontAttributeName] = [UIFont systemFontOfSize:12];
        attrSelected[NSForegroundColorAttributeName] = [UIColor darkGrayColor];
        [essenceVC.tabBarItem setTitleTextAttributes:attrSelected forState:UIControlStateNormal];
    setTitleTextAttributes 方法 是 “UI_APPEARANCE_SELECTOR ”,以后只要看到 方法名后面有 “UI_APPEARANCE_SELECTOR ”,就代表可以使用 "[UITabBarItem appearance];" 中的 “appearance”。统一设置。

    比如说:tabbarController 上面有5个tabbarItem 。这个时候可以写成:
        // 默认
        NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
        attrs[NSFontAttributeName] = [UIFont systemFontOfSize:12];
        attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
    
        // 选中
        NSMutableDictionary *attrSelected = [NSMutableDictionary dictionary];
        attrSelected[NSFontAttributeName] = [UIFont systemFontOfSize:12];
        attrSelected[NSForegroundColorAttributeName] = [UIColor darkGrayColor];
        
    
        UITabBarItem *item = [UITabBarItem appearance];
        [item setTitleTextAttributes:attrs forState:UIControlStateNormal];
        [item setTitleTextAttributes:attrSelected forState:UIControlStateNormal];
    
    

    这样写完,可以保证5各tabbar的 文字都是统一的。

     
  • 相关阅读:
    安装配置ssh免密码登录
    大数据学习之Linux环境搭建(导航)
    Linux下搭建sqli-labs环境
    SpringMVC freemarker 中 Could not resolve view with name 'XXX.ftl' in servlet with name 'SpringMVC'
    配置FreeMarker时IDEA提示cannot resolve property 'templateLoaderPath'
    MySQL在指定字段后添加一个新字段
    META-INF/MANIFEST.MF file not found in unnamed.war
    Java获取音频播放时长
    JS实现阿拉伯数字转韩文
    微信公众号开发-素材管理-调用接口返回结果一览表
  • 原文地址:https://www.cnblogs.com/iOS363536404/p/5590546.html
Copyright © 2011-2022 走看看