iOS链式编程风格 -- 富文本字符串

这篇具有很好参考价值的文章主要介绍了iOS链式编程风格 -- 富文本字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概念

        链式编程风格是一种将多个函数调用连接起来,形成一条函数调用链的编程风格。这种风格的代码可以通过返回 self 或某个适当的对象来实现。

1.优点

  1. 代码简洁、连贯、易于阅读。
  2. 可以将一个方法的输出直接作为下一个方法的输入,降低中间变量的使用。

2.缺点

  1. 链式调用过长可能会导致代码可读性降低。
  2. 由于错误可能出现在链的任何一环,所以调试可能会有所困难。

二、代码

        下面是一个使用链式编程风格构建的 NSMutableAttributedString 的例子,这个例子将展示如何将一系列的 NSAttributedString 配置操作链接在一起。

        首先,我们需要创建一个类 ChainableAttributedBuilder,它可以用于创建和配置 NSAttributedString:

1..h文件

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface ChainableAttributedBuilder : NSObject

@property (nonatomic, strong, readonly) NSMutableAttributedString *mutableAttributedString;

- (ChainableAttributedBuilder *(^)(NSString *text))append;

- (ChainableAttributedBuilder *(^)(UIColor *color))textColor;

- (ChainableAttributedBuilder *(^)(UIFont *font))font;

- (ChainableAttributedBuilder *(^)(NSParagraphStyle *style))paragraphStyle;

@end

NS_ASSUME_NONNULL_END

2..m文件

#import "ChainableAttributedBuilder.h"

@implementation ChainableAttributedBuilder

- (instancetype)init {

    if (self = [super init]) {

        _mutableAttributedString = [[NSMutableAttributedString alloc] init];

    }

    return self;

}

- (ChainableAttributedBuilder *(^)(NSString *text))append {

    return ^(NSString *text) {

        NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text];

        [self.mutableAttributedString appendAttributedString:attributedString];

        return self;

    };

}

- (ChainableAttributedBuilder *(^)(UIColor *color))textColor {

    return ^(UIColor *color) {

        [self.mutableAttributedString addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, self.mutableAttributedString.length)];

        return self;

    };

}

- (ChainableAttributedBuilder *(^)(UIFont *font))font {

    return ^(UIFont *font) {

        [self.mutableAttributedString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, self.mutableAttributedString.length)];

        return self;

    };

}

- (ChainableAttributedBuilder *(^)(NSParagraphStyle *style))paragraphStyle {

    return ^(NSParagraphStyle *style) {

        [self.mutableAttributedString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, self.mutableAttributedString.length)];

        return self;

    };

}

@end

3.调用代码

    ChainableAttributedBuilder *builder = [[ChainableAttributedBuilder alloc] init];

    builder.append(@"Hello ").font([UIFont systemFontOfSize:16]).textColor([UIColor redColor]);

    builder.append(@"world!").font([UIFont systemFontOfSize:20]).textColor([UIColor blueColor]);

    NSAttributedString *attributedString = builder.mutableAttributedString;

    // 现在,attributedString 是一个带有不同样式的 "Hello world!" 的富文本字符串。

三、Demo链接

GitHub - danransmile/attributed_string: iOS链式编程风格 -- 富文本字符串文章来源地址https://www.toymoban.com/news/detail-633266.html

到了这里,关于iOS链式编程风格 -- 富文本字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React实现字符串首字母大写、翻转字符串、获取用户选定的文本

    在这个React的案例中,我们首先导入了React和useState钩子函数。 然后,我们定义了一个函数组件 App ,它包含了两个状态变量 inputText 和 outputText ,分别用于存储输入文本和输出文本。 我们使用 useState 钩子函数来创建这两个状态变量,并通过数组解构赋值的方式获取它们的当前

    2024年01月24日
    浏览(45)
  • 深入了解字符串处理算法与文本操作技巧

    引言 字符串处理是计算机科学和数据处理的核心领域之一。本博客将深入介绍一些常见的字符串处理算法和文本操作技巧,包括字符串匹配、搜索、正则表达式、字符串操作和文本标准化等。 暴力匹配算法 什么是暴力匹配? 暴力匹配算法是一种最简单的字符串匹配方法,它

    2024年02月10日
    浏览(36)
  • IDE /字符串 /字符编码与文本文件(如cpp源代码文件)

    前期在整理 《IDE/VS项目属性中的 <字符集> 配置项》 和 《IDE /Qt Creator 文本编辑器之文件编码设置》和 《IDE /C4819: 该文件包含不能在当前代码页(936)中表示的字符》等文章的过程中,做了不少关于字符编码的测试,解决了一些问题,但是也让我有了些新的问题和思考。简单

    2024年02月16日
    浏览(27)
  • pg使用sql将文本字符串转换成时间格式

    使用 PostgreSQL 数据库的 SQL 查询语句将文本字符串转换为时间格式,可以使用 to_timestamp 函数。 假设您的文本字符串时间格式为 “yyyy-MM-dd HH:mm:ss”,您可以使用以下 SQL 查询来转换: 这将返回一个时间戳类型的结果,其中包含从文本字符串转换而来的时间。 您可以在您的

    2024年02月12日
    浏览(54)
  • 百度OCR识别图片文本字符串——物联网上位机软件

            根据项目需求,我们需要完成LED显示屏实时显示歌词的效果。最优的方法是调用歌曲播放器的API获取歌词,但是由于这个开发资格不是很好申请,因此我们采用其他方案,即通过OCR识别获取歌词,并投射到LED显示屏上。本项目使用 IDEA 开发。         本文将跳过对歌

    2024年02月06日
    浏览(29)
  • Python 中的字符串匹配识别文本中的相似性

    更多Python学习内容:ipengtao.com 字符串匹配是自然语言处理(NLP)和文本处理中的一个重要任务,它可以识别文本之间的相似性、找到相同或相似的模式,以及进行文本分类和信息检索等应用。本文将深入探讨Python中的字符串匹配技术,包括基本的字符串比较方法、正则表达式

    2024年01月18日
    浏览(43)
  • python编程——字符串讲解

    作者: Insist-- 个人主页: insist--个人主页 本文专栏: python专栏 专栏介绍: 本专栏为 免费 专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 前言 本文将介绍python字符串是什么?以及它的几种相关知识,比如创建字符串。 目录 一、字符串是什么 二、字符串相关知

    2024年02月13日
    浏览(29)
  • 查找目录中所有内容文本中不含某个特定字符串的文件列表

    查找目录中所有内容中不含某个特定字符串的文件的列表 -type f 表示只查找文件; !表示对匹配条件进行取反,即不含特定字符串; {} ;  将每个被找到的文件作为参数传递给find后面的grep命令,其中: 花括号是 find 命令使用的占位符,用于知道在何处插入当前正在使用的文

    2024年02月19日
    浏览(32)
  • 【编程语言 · C语言 · 字符串】

    C中的字符串是一个以NULL字符\\\'\\0\\\'结尾的字符数组。 字符串声明可以通过多种方式进行,每种方式都有其各自的考虑因素。 例如: 这将创建一个由str_len个字符组成的名为str_name的字符串,并将其初始化为值“ string”。 提供字符串文字以初始化字符串时,编译器会自动将NULL字符

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包