iOS 字符中插入按钮(简单图文混排)

iOS NSAttributedString、YYLAbel、YYKit、YYCache 【代码】iOS NSAttributedString、YYLAbel。 阅读详情

需求

字符串中某段区域需要添加点击效果或者字符串中添加可点击的按钮。
解决:给UILabel添加点击事件的category。

调用方法

用字符串标记需要点击的位置
    NSMutableAttributedString *attributedString1 = [[NSMutableAttributedString alloc]initWithString:@"这是一串可点击的字符串,通过字符串进行标记了点击"];
    [attributedString1 addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(0, attributedString1.length)];
    [attributedString1 addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5, 2)];
    [attributedString1 addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(attributedString1.length - 2, 2)];
    _textLabel1.attributedText = attributedString1;
    [_textLabel1 addAttributeActionWithStrings:@[@"点击",@"点击"] tapTargetAction:^(NSString *string, NSRange range, NSInteger index) {
        NSLog(@"点击字符串:%@ 范围在%@,第%ld个",string,NSStringFromRange(range),index+1);
    }];
用范围标记需要点击的位置(实现插入按钮)
    NSMutableAttributedString *attributedString2 = [[NSMutableAttributedString alloc]initWithString:@"使用范围来进行标记的字符串,可以在字符串在添加图片进行点击,实现再字符串中插入按钮的效果,有颜色的都可点击"];
    NSRange rang1 = [attributedString2.string rangeOfString:@"标记"];
    NSRange rang2 = [attributedString2.string rangeOfString:@"点击"];
    NSRange rang3 = [attributedString2.string rangeOfString:@"按钮"];

    [attributedString2 addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, attributedString2.length)];
    [attributedString2 addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:rang1];
    [attributedString2 addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:rang2];

    //添加图片附件(插入图片,添加点击事件)
    NSTextAttachment *attach = [[NSTextAttachment alloc] init];
    attach.image = [UIImage imageNamed:@"abc.jpg"];
    attach.bounds = CGRectMake(0, 0, 15, 15);
    NSAttributedString *attachString = [NSAttributedString attributedStringWithAttachment:attach];
    [attributedString2 insertAttributedString:attachString atIndex:rang3.location];
    _textLabel2.attributedText = attributedString2;
    [_textLabel2 addAttributeActionWithRange:[NSArray arrayWithObjects:[NSValue valueWithRange:rang1],[NSValue valueWithRange:rang2],[NSValue valueWithRange:rang3],nil] tapTargetAction:^(NSString *string, NSRange range, NSInteger index) {
        NSLog(@"点击字符串:%@ 范围在%@,第%ld个",string,NSStringFromRange(range),index+1);
    }];

代码下载

github下载

Unity聊天系统自定义表情包方案:基于TextMeshPro与TexturePacker的高性能图文混排 在Unity游戏开发中,实现图文混排是UI系统设计的常见需求,尤其在社交与社区类项目中,聊天系统需要支持自定义表情包。其核心原理在于将图片资源作为特殊字符嵌入文本流,由渲染引擎统一处理布局与绘制,从而避免因动态创建大量UI组件导致的性能瓶颈。这一技术方案能显著降低Draw Call,提升滚动列表的渲染效率,具有重要的工程实践价值。TextMeshPro (TMP) 凭借其可扩展的字体系统和富文本解析引擎,为实现该方案提供了强大支持。通过创建自定义的Sprite Asset,可以将表情图片映射为特殊字符,并利 阅读详情

相关推荐

swift-一行代码添加文本点击事件(swfit版本)

一行代码添加文本点击事件(swfit版本)/a fast way to implement click event text(for swfit)

iOS图文混排

自定义NSAttributedString分类// NSAttributedString+Additon.h #import <UIKit/UIKit.h>@interface NSAttributedString (Additon)/// 使用图像和文本生成上下排列的属性文本 /// /// @param image 图像 /// @param imageWH 图像宽高 ///

Zok93 1579

SSD训练自定义数据集实战:VOC格式标注与模型调参技巧

本文详细介绍了如何使用SSD模型训练自定义VOC格式数据集,包括数据标注工具选择、VOC数据集目录结构规范、数据集划分方法以及模型调参技巧。通过实战案例演示了SSD源码的关键修改点和训练参数优化策略,帮助开发者高效实现目标检测任务。

php55的博客 563

iOS 文本点击事件

项目中总会遇到给文本添加点击事件的问题,这里我使用的是textView控件. @property (strong, nonatomic) IBOutlet UITextView *textView; - (void)initTextView { NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"尊敬的用户,我们尊重并保护用户隐私,为了更好地保障您的个人权

weixin_48567147的博客 719

通达信浮筹多空波段抓牛擒龙指标公式源码

VAR33:=VA3>=REF(VA4,1) AND C<REF(C,1) AND VAR19=60 AND VAR18=0 AND 活跃线>=REF(活跃线,1) AND VA12<REF(VA13,1);DRAWTEXT(VAR28 AND COUNT(VAR28,30)=1,65,' ★超涨注意风险'),COLOR0000FF;DRAWTEXT(VAR26 AND COUNT(VAR26,30)=1,90,' ←继续等'),COLOR00FFFF;浮筹线:VA3,COLORFF00FF;

2401_86043146的博客 5257

Python处理高光谱数据#3 降维

基于Python的高光谱降维操作 高光谱数据:点击此处可下载 用到的库:matplotlib、scipy、spectral 主要内容:主成分分析(PCA)与线性判别(LDA) 欢迎有兴趣的朋友交流指点。最后,废话不多说直接上代码???? import matplotlib.pyplot as plt from scipy.io import loadmat import spectral as spy

qq_273058791的博客 6936

IOS富文本+点击事件《开发日志》

效果图: - (void)protocolView:(NSString *)protocolName { NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"我已阅读并同意%@",protocolName]]; [attributedString addAttribute:N...

李小源的博客 1260

RV1126 ISP开发实战:从Tuner调试到IQ文件解析

本文详细介绍了RV1126 ISP开发的完整流程,从Tuner调试到IQ文件解析,涵盖了环境搭建、工具使用、参数配置及性能优化等关键环节。通过实战案例和避坑指南,帮助开发者快速掌握Rockchip芯片的ISP开发技巧,提升图像处理质量。

weixin_29195615的博客 570

iOS技术之TextView实现部分字符串赋予点击事件

1.遵守UITextFieldDelegate代理。

qw656567的博客 739

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 200

OC实现简单的图文混排

- (void)showCity:(NSString *)cityname {     //实现富文本     NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:cityname attributes:nil];     //进行图文混排     NSTextAt

zyfmeng的博客 1090

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1044

TYAttributedLabel终极指南:iOS开发者的高性能富文本标签解决方案

现在就clone仓库,体验TYAttributedLabel带来的开发便利吧!🚀

gitblog_00091的博客 496

逆向工具:一文讲述 Ghidra 的详细使用

Ghidra是由NSA开源的一款功能强大的逆向工程框架,支持多平台、多架构和多种文件格式分析。本文详细介绍了Ghidra的核心优势、安装配置方法、主界面功能模块,并通过一个CrackMe示例演示了完整的逆向分析流程。文章还讲解了高级功能如交叉引用、控制流图分析、数据类型重建和脚本自动化等,最后提供了常见文件格式的分析技巧。作为IDA Pro的免费替代方案,Ghidra适合个人学习、教学和中小项目使用。(149字)

数据知道的博客 4342

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ios开发学习--文字视图(Text)效果源码分享--系列教程

Swipe Shift Caret 介绍: 在UITextView或者UITextField中插入文字的时候,用手指滑动屏幕左右两边任意位置,都可以左右调整文字输入光标(caret)。在选择文字范围时,用手指左右滑动屏幕,都可以调整选择的左右范围,而不需要用手指拖动范围选择的两根竖线(caret)。 http://ios.itmdc.com/thread-3647-1-1.html

apkbus的专栏 1034

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SwiftyPickerPopover 之 StringPickerPopover:单列字符串选择器的 7 个实用技巧

在 iOS 开发中,"让用户从一列字符串里挑一个值"是最常见的交互需求之一。SwiftyPickerPopover 正是一个为此而生的开源库:它能在 iPhone 和 iPad(iOS 9+)上,用几行链式调用代码,弹出一个带标题栏和按钮的原生 Popover 选择器。其中,**StringPickerPopover** 就是最常用的单列字符串选择器,支持自定义字体、图片、清除按钮与自动消失等功能

gitblog_01026的博客 1031

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

类似微信表情图文混排(本地自定义表情)

注:仅仅是提供思路 有些问题如隐藏系统自带的selectall按钮 自定义copy按钮 需要再解决 //首先引用 https://github.com/zekunyan/UITextViewDIYEmojiExample 这个第三方 = =里面有demo  // 这里讲的是如何把方法  添加到点击消息弹出的复制功能上  - (void)resetTextStyle {     //

zhuzhu5066的博客 1258

textkit相关做图文混排键盘

无论是富媒体输入还是聊天表情输入,都经常切换系统键盘和自定义输入View。跟Android不一样的是,iOS需要在输入控件如UITextView聚焦才能出现键盘,默认情况下一旦输入控件失焦点有没有切换到其他输入控件的时候,键盘随之消失。尽管,可以通过text属性添加响应内容,但是没有光标的位置提示总是个缺陷。 如腾讯的微信和手Q的iOS版都是没有很好处理光标问题,特别是微信iOS版的表情输入还是

kaka 659

iOS开发小技巧:NSTextAttachment图文混排时图片与文字完美对齐的3种方法

本文深入探讨了iOS开发中NSTextAttachment图文混排时图片与文字对齐的三种核心方法。从理解字体度量与默认行为出发,依次介绍了基于字体Descender的经典居中法、精确计算视觉中心的进阶对齐法,以及通过自定义文本容器实现像素级控制的终极方案,帮助开发者彻底解决图文错位问题,提升界面精致度。

wine的专栏 222

swift实现导航栏上展示城市名称,城市名称过长则隐藏部分

func showCity(cityName:String){         //实现富文本         var string: NSMutableAttributedString         string = NSMutableAttributedString(string: cityName)                  //进行图文混排         var

zyfmeng的博客 654

深入解析iOS UIFont的Attributes:从基础到实践

本文深入解析iOS开发中UIFont的Attributes属性,详细拆解ascender、descender、capHeight、xHeight等核心度量参数。通过实战案例演示如何利用这些属性精确计算偏移量,解决富文本中图片与文字垂直对齐的难题,帮助开发者实现精细化UI排版,提升界面视觉效果。

e3f4g5的博客 526

ueditor添加新模块

添加一个名叫“hougelou”的普通按钮 附言:以下是以UEditor .Net版本举例说明。 第一步:找到ueditor.config.js文件中的toolbars数组,增加一个“hougelou”字符串,然后找到labelMap数组,对应着添加一个labelMap,用于鼠标移上按钮时的提示。 //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的从新定义 ...

weixin_30493321的博客 107

AztecEditor-iOS 双模式编辑实战:富文本与 HTML 源码视图无缝切换全解析

在 iOS 开发中,如何让用户既能像使用 Word 一样直观地编辑富文本,又能随时查看、修改背后的 HTML 源码?这是博客、CMS、笔记类 App 最常见的痛点。**AztecEditor-iOS** 正是为解决这一问题而生的开源组件——它是一个可复用的原生 iOS 富文本编辑器,内置「所见即所得」与「HTML 源码」双模式,并支持两种视图的无缝切换。本文将从零开始,带你全面解析它的双模式编辑架

gitblog_00030的博客 667

表情键盘及文字表情识别简单demo

1、前言 了解了简单图文混排 (属性字符串的使用)及 正则表达式的部分知识,为了加深印象,写了个简单表情键盘demo 展示文字用的是 UITextView 由于时间匆忙,存在一些bug,以及不完善的地方,仅作为小demo 练习一下 图文混排可以用 TextKit ,下次有时间学习下 环境 xcode 7.3 , swift 2.3 2、效果 3、表情键盘相关 Emoticons.bundl...

weixin_30826095的博客 171
上一篇: Swift与OC的区别
下一篇: iOS加密方式(RSA签名加密、AES加密等)
winterLiao
博客等级 码龄10年 5粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值