首页 > 其他分享 >Apple开发_不限多参数的双语显示富文本本地化方法

Apple开发_不限多参数的双语显示富文本本地化方法

时间:2023-01-04 11:46:20浏览次数:44  
标签:info va arglist Apple 双语 range arg main 不限多

1、前言

  • 双语显示上下显示一大一小会好看点,同时最好支持设置文字颜色,但有时候只想使用默认的参数。此时动态多参数应运而生。

2、解决

  • 2.1 新建一个文件专门放以下代码

#define GCLocal(...) [self local:__VA_ARGS__, nil]

- (id)local:(NSString *)main_info, ... NS_REQUIRES_NIL_TERMINATION {
    va_list arglist;
    va_start(arglist, main_info);
    
    id arg = va_arg(arglist, id);
    if (arg) {
        if ([main_info containsString:@"\n"]) {
            NSRange range = [main_info rangeOfString:@"\n"];
            NSInteger index = range.location;;
            NSRange range_1 = NSMakeRange(0, index);
            // 实例化可变属性的字符串对象
            NSMutableAttributedString *attr_str = [[NSMutableAttributedString alloc] initWithString:main_info];
            
            void(^add_Attribute)(id arg) = ^(id arg) {
                if ([arg isKindOfClass:[UIColor class]]) {
                    [attr_str addAttributes:@{NSForegroundColorAttributeName: arg }
                                      range:NSMakeRange(0, main_info.length)];

                }
                else if ([arg isKindOfClass:[NSNumber class]]) {
                    NSInteger main_font = [arg integerValue];
                    // 设置文字的颜色和文字的大小
                    [attr_str addAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:main_font]}
                                      range:range_1];
                    NSRange range_2 = NSMakeRange((index + 1), main_info.length - (index + 1));
                    // 设置文字的颜色和文字的大小
                    [attr_str addAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:main_font * 0.7]}
                                      range:range_2];
                }
                else {
             
                }
            };
            add_Attribute(arg);

            while ((arg = va_arg(arglist, id))) {
                add_Attribute(arg);
            }
            va_end(arglist);
            return attr_str;
        }
        else {
            va_end(arglist);
            return main_info;
        }
    }
    else {
        va_end(arglist);
        return main_info;
    }
}
  • 2.2 使用

id style_info = GCLocal(@"搜索中\nSearching", [UIColor whiteColor], @(35));
    if ([style_info isKindOfClass:[NSAttributedString class]]) {
        self.none_tv.attributedText = style_info;
    }
    else {
        self.none_tv.text = style_info;
    }
  • 2.3 效果

标签:info,va,arglist,Apple,双语,range,arg,main,不限多
From: https://www.cnblogs.com/CH520/p/17024372.html

相关文章

  • NC24755 [USACO 2010 Dec S]Apple Delivery
    题目链接题目题目描述Bessiehastwocrispredapplestodelivertotwoofherfriendsintheherd.Ofcourse,shetravelstheC(1<=C<=200,000)cowpaths......
  • 牛客寒假算法基础集训营4-J-Applese 的减肥计划
    链接:​​https://ac.nowcoder.com/acm/contest/330/J​​牛客网 已知Applese两只手分别产生的力的大小,以及它们之间的夹角,试求两力合力的大小。输入描述:仅一行三个整......
  • 牛客寒假算法基础集训营4-B-Applese 走方格
    链接:​​https://ac.nowcoder.com/acm/contest/330/B​​​牛客网 在这个游戏中,它位于一个n行m列的方阵中的左上角(坐标为(0,0),行的序号为0∼n−10∼n−1,列的序号为0......
  • 纷繁复杂的操作系统到底是什么关系从APPLE到Android到Linux等
    各个系统之间的关系最近接触了很多很多系统,多种多样,纷繁复杂,感觉有点乱想整理以下思路,结果一下笔内容还挺多,不全,就是现在能见到的,梳理一下,站在一个外行的角度写写省的乱,不......
  • SketchUp Pro 2022 for Mac(草图大师)中英文双语 v22.0.353激活版
    SketchupPro2022中文版是一套直接面向设计方案创作过程的设计工具,其创作过程不仅能够充分表达设计师的思想而且完全满足与客户即时交流的需要,它使得设计师可以直接在电脑......
  • DB2 on Apple Silicon
    DB2onAppleSiliconhttps://www.triton.co.uk/db2-on-apple-silicon/Apple’sMacshavebeenapopulardevelopmentplatformformanyyearsnow,butIBMhavenev......
  • 使用go脚本解析bilibili TED 双语字幕
    最近想学一点英语,在b站上找到了TED合集,想把里面的字幕给整下来,所以就简单写了一个脚本,有兴趣的同学可以自取。拿到字幕在网页按F12,刷新页面,在network里过滤.json,出来......
  • 如何清洁 Apple 产品
    异丙醇或者乙醇+“抛光布”或无绒软布。中性清洁剂和干净的干布。请勿使用窗户清洁剂、家用清洁剂、喷雾剂、溶剂、氨水、研磨剂或含有过氧化氢的清洁剂。屏幕上有疏油涂......
  • apple 打包
    hbuilderxios自定义基座真机测试https://ask.dcloud.net.cn/article/40041https://www.ngui.cc/article/show-636857.html?action=onClick......
  • Unlawfully wed 小小新娘 | 经济学人中英双语对照精读笔记
    文/王不留(微信公众号:王不留)Unlawfullywed非法结婚Religiouscourtscontinuetoallowgrownmentomarrygirls.宗教法院继续允许成年男子与女孩结婚。印尼司法机构,设......