Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS封装富文本API,采用block实现链式编程(结合block和方法的优点实现iOS的链式编程)【修订版】

iOS封装富文本API,采用block实现链式编程(结合block和方法的优点实现iOS的链式编程)【修订版】

作者头像
公众号iOS逆向
发布于 2021-07-05 13:10:59
发布于 2021-07-05 13:10:59
76100
代码可运行
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全
运行总次数:0
代码可运行
  • 1.1 关键步骤
  • 1.2 使用方法
  • 2.1 使用宏进行block属性的声明
  • 2.2 代码
  • 3.1 自定义相机
  • 3.2 展示信用卡标签

前言

【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)

1、原理文章:https://kunnan.blog.csdn.net/article/details/107835195 block 的妙用:结合block和方法的优点实现iOS的链式编程 2、功能:主要针对段落样式NSMutableParagraphStyle和富文本NSMutableAttributedString进行封装,提升开发效率 3、下载地址:https://download.csdn.net/download/u011018979/14038715 4、实现步骤:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值) 5、链式编程特点:将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好a(1).b(2).c(3)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    xx.kn_addString(@"封装富文本API").kn_fontColor(UIColor.redColor).kn_addString(@"采用block实现链式编程").kn_fontColor(UIColor.blueColor).kn_addString(@"!");

I、封装富文本API,采用block实现链式编程的核心思想

1.1 关键步骤

  • 声明block属性
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
k_PropertyStatement(strong, NSMutableAttributedString, NSString*, kn_addString)// 好处是Xcode的提示比较友好
//- (NSMutableAttributedString * _Nonnull (^)(NSString * _Nonnull))kn_addString// 不推荐直接声明getter方法,推荐上面的声明的block属性

  • 实现getter方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (NSMutableAttributedString * _Nonnull (^)(NSString * _Nonnull))kn_addString{
    return ^id(NSString *str){
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:str];
        self.leftStr = str;
        [self appendAttributedString:attStr];
        return self;
    };
}

1.2 使用方法

  • Installation
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pod 'ChainAttributedString'

  • 声明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//#import <ChainAttributedString/ChainAttributedString-umbrella.h>

#import <ChainAttributedString/NSMutableAttributedString+Chain.h>

  • demo
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制


    UILabel *x = [UILabel new];
    x.textAlignment = NSTextAlignmentCenter;
    
    [self.view addSubview:x];
    
    x.frame = self.view.frame;
    
    
    x.numberOfLines = 0;
    
    NSMutableAttributedString *xx  = [[NSMutableAttributedString alloc]init];
    
    
    xx.kn_addString(@"封装富文本API").kn_fontColor(UIColor.redColor).kn_addString(@"采用block实现链式编程").kn_fontColor(UIColor.blueColor).kn_addString(@"!");
    
    
    
    
    
    x.attributedText =xx;
    

II、实现细节

2.1 使用宏进行block属性的声明

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
主要针对段落样式NSMutableParagraphStyle和富文本NSMutableAttributedString进行封装
公众号iOS逆向
2021/01/18
8850
【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
iOS富文本使用指南: 1、封装富文本API,采用block实现链式编程 2、 超链接属性 3、HTML字符串与富文本互转
iOS开发效率工具:完整SDK源码【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
公众号iOS逆向
2021/03/08
1.5K0
iOS富文本使用指南: 1、封装富文本API,采用block实现链式编程 2、 超链接属性 3、HTML字符串与富文本互转
iOS小技能:链式编程在iOS开发中的应用
封装是为了更好的重用性、可扩展性,但要综合考虑性能问题,即使新增了判断也会增加性能的消耗,只是不会量级的增加。比如简单工厂和抽象工厂(反射机制)的封装,会增加性能的消耗。但把对象的管理变成了可配置化。
公众号iOS逆向
2022/08/22
1K0
iOS小技能:链式编程在iOS开发中的应用
iOS 之-富文本 (NSAttributedString)
关于富文本能做什么我就不多说了,我们一般遇到的图文混排等,这个还是很好做到的。 好,开讲了: 在讲之前,我们得先明白他的属性和一些方法 1.属性: NSFontAttributeName 设置字体属性,默认值:字体:Helvetica(Neue) 字号:12 NSForegroundColorAttributeNam 设置字体颜色,取值为 UIColor对象,默认值为黑色 NSBackgroundColorAttributeName
清墨
2018/05/07
3.1K0
iOS 之-富文本 (NSAttributedString)
iOS 之 异步绘制原理
这其中的工作都是在主线程中完成的,这就导致了主线程频繁的处理 UI 绘制的工作,如果要绘制的元素过多,过于频繁,就会造成卡顿。
网罗开发
2021/04/07
3.4K0
iOS 之 异步绘制原理
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
        关于图文混排,其实以前的博客已经讨论很多,在实际开发中,经常使用第三方的框架来完成排版的需求,其中RCLabel和RTLabel是两个比较好用的第三方库,他们的实现都是基于UIView的,通过更底层的CoreText相关API来进行图文处理。相关介绍博客地址如下:
珲少
2018/08/15
2.3K0
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
Masonry
例如:我们需要布局一个视图view1,使他距离父视图上下左右都为10,NSLayoutConstraints布局代码如下:
czjwarrior
2019/12/30
1.1K0
Masonry
富文本AttributedString的总结
AttributedString可以分为NSAttributedString和NSMutableAttributedString两种。 在使用中通过将AttributedString赋值给控件的 attributedText 属性来添加文字样式。 可设置的控件有UILabel、UITextField和UITextView。
码客说
2019/10/22
3.6K0
Objective-C实现链式编程语法(DSL)
您越着急开始写代码,代码就会花费越长的时间。 - Carlson, University of Wisconsin
VV木公子
2018/08/13
8.2K0
Objective-C实现链式编程语法(DSL)
图文混排
是基于 iOS 3.2+ 和 OSX 10.5+ 的一种能够对文本格式和文本布局进行精细控制的文本引擎。 它良好的结合了 UIKit 和 Core Graphics/Quartz: UIKit 的 UILabel 允许你通过在 IB 中简单的拖曳添加文本,但你不能改变文本的颜色和其中的单词。 Core Graphics/Quartz几乎允许你做任何系统允许的事情,但你需要为每个字形计算位置,并画在屏幕上。 Core Text 正结合了这两者!你可以完全控制位置、布局、类似文本大小和颜色这样的属性,而 Core Text 将帮你完善其它的东西——类似文本换行、字体呈现等等。
Helloted
2022/06/06
1.7K0
图文混排
iOS框架·Masonry源码深度解析及学习启示:设计模式与链式编程思想
可见,系统传统的代码布局有点繁琐。为了简化上述传统布局代码,被广泛应用的第三方框架 Masonry 对AutoLayout 进行了封装,Swift版则是 SnapKit。这篇文章就是针对 Masonry 源代码的解析与学习笔记。在这之前,如下图所示,是 Masonry 源代码的结构图:
陈满iOS
2018/09/10
1.2K0
iOS框架·Masonry源码深度解析及学习启示:设计模式与链式编程思想
六天完成一个简单iOS App - 第二天
第二天任务: 项目主框架搭建完毕后,就可以从各个模块入手完成项目,这里从最简单的关注模块开始。 关注页面的搭建 登录界面的搭建 方法抽取与知识点总结 一. 关注页面的搭建 关注页面我们这里只做未登录的
xx_Cc
2018/05/10
2.2K0
iOS自定义相机:带拍摄区域边框、半透明遮罩层、点击屏幕对焦、自动裁剪(含demo源码)
从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19149017
公众号iOS逆向
2021/07/05
3.7K0
iOS自定义相机:带拍摄区域边框、半透明遮罩层、点击屏幕对焦、自动裁剪(含demo源码)
iOS函数响应式编程以及ReactiveCocoa的使用
打算在项目中大面积使用RAC来开发,所以整理一些常用的实践范例和比较完整的api说明方便开发时随时查阅
用户7451029
2020/06/16
2.1K2
iOS函数响应式编程以及ReactiveCocoa的使用
ReactiveCocoa函数响应式编程-应用篇目录:一、RAC中常用的类4.RACCommand:用于处理事件的类二、RAC常用的宏定义三、RAC中关于信号的常用操作四、RAC常用的处理事件响应的方
使用RAC其实就是一个创建信号订阅信号的过程。上篇ReactiveCocoa函数响应式编程-基础篇,主要简单介绍了RAC的信号机制,本篇则以信号为核心,就信号常用的类、操作信号的方法,替换响应处理等方面总结RAC的使用。 目录: 一、RAC中常用的类 二、RAC中常用的宏 三、RAC中信号的常用操作 四、RAC常用的处理事件响应的方法 五、本篇总结 本篇还提供了关于RAC使用的两个测试工程,结合代码学习更加直观: 项目1: 1.测试RAC对信号的各类操作。 2.使用RAC改进一个普通的登录界面
梧雨北辰
2018/04/24
3.3K0
ReactiveCocoa函数响应式编程-应用篇目录:一、RAC中常用的类4.RACCommand:用于处理事件的类二、RAC常用的宏定义三、RAC中关于信号的常用操作四、RAC常用的处理事件响应的方
iOS初来乍到,你如何开始第一个封装类?
此博客为初级iOS而写,这里不讲难以理解的知识,就说说怎么样封装一个简单的控件。我记得在我开始自己第一个封装控件的时候,真的是一筹莫展,就像抱着一个西瓜不知道怎么下口。 我们经常用到三方控件,无一例外都是封装好的。要想快速学习,有一个途径就是看别人的封装源码。封装好才类使用起来很爽,很傻瓜易用。在此感谢那些无私开源的人,给我们很多学习的机会。网上封装多不胜数,但却很少有人告诉一个小白你应该怎么去封装。即便是初级我想你可能也封装过自己的类,我也如此,只不过我愿意把这些写出来给不会的人看看。 学习编程的时候听老
Raindew
2018/06/14
1.2K0
iOS-代码规范
利用上周的业余时间把这篇规范整理了出来,我会将这篇规范作为我们iOS团队的代码规范,并且还会根据读者的反馈,项目的实践和研究的深入做不定时更新,还希望各位朋友看了多多指正和批评。
用户1740424
2018/07/23
2.3K0
iOS-代码规范
iOS开发--我与面试官有个约会
[TOC] 一、写在前面 首先是对帮助过我的大哥大姐们来一波感谢?在我换工作这段时间里有内推的,答疑解惑的,送吃的甚至还有看风水的(/ω\),多少让Lisa这个小透明有些受宠若惊了。真的非常感谢大家对
谦谦君子修罗刀
2020/12/22
2.7K1
iOS开发--我与面试官有个约会
iOS Core Animation:Advanced Techniques
到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能。但是Core Animation图层不仅仅能作用于图片和颜色而已。本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力。
conanma
2021/09/02
2K0
iOS支付项目实践专栏- 总目录(持续更新)
本专栏以实战为线索,逐步深入iOS开发各个环节,掌握支付APP常用的基础功能(均含demo源码),打造完整native客户端工作流,提升工程化编码能力和思维能力。
公众号iOS逆向
2021/07/05
9770
iOS支付项目实践专栏- 总目录(持续更新)
推荐阅读
相关推荐
【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验