首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在UITextView上替换属性化文本时保持自定义属性

,可以通过NSAttributedString来实现。NSAttributedString是一个富文本字符串,可以在其中设置不同的属性,如字体、颜色、段落样式等。

首先,我们需要创建一个NSMutableAttributedString对象,该对象包含了要替换的文本和其对应的属性。然后,我们可以使用NSMutableAttributedString的replaceCharacters(in:range:with:)方法来替换指定范围内的文本。

以下是一个示例代码,演示如何在UITextView上替换属性化文本并保持自定义属性:

代码语言:swift
复制
// 原始文本
let originalText = "Hello, World!"

// 创建NSMutableAttributedString对象
let attributedText = NSMutableAttributedString(string: originalText)

// 设置自定义属性
let customAttributes: [NSAttributedString.Key: Any] = [
    .font: UIFont.boldSystemFont(ofSize: 16),
    .foregroundColor: UIColor.red
]
attributedText.setAttributes(customAttributes, range: NSRange(location: 0, length: attributedText.length))

// 要替换的文本和属性
let replacementText = "Swift"
let replacementAttributes: [NSAttributedString.Key: Any] = [
    .font: UIFont.italicSystemFont(ofSize: 16),
    .foregroundColor: UIColor.blue
]

// 替换文本
let range = (originalText as NSString).range(of: replacementText)
attributedText.replaceCharacters(in: range, with: NSAttributedString(string: replacementText, attributes: replacementAttributes))

// 将属性化文本设置给UITextView
textView.attributedText = attributedText

在上述示例中,我们首先创建了一个NSMutableAttributedString对象,并设置了自定义属性(粗体和红色)。然后,我们使用replaceCharacters(in:range:with:)方法替换了文本中的"World"为"Swift",并设置了替换文本的自定义属性(斜体和蓝色)。最后,我们将属性化文本设置给UITextView。

这样,我们就可以在UITextView上替换属性化文本并保持自定义属性。对于更复杂的属性化文本替换需求,可以根据具体情况进行调整和扩展。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

UITextField 属性 (1) PlaceHolder 属性 PlaceHolder 属性 : 属性值是一个字符串, 再文本框没有输入内容, 文本框内显示的灰色文本, 用于作为文本框提示信息...: 指定文本字体是否随着文本框缩小 而 减小; -- 作用 : 勾选该复选框可以确保整个文本文本框总是可见; Min Font Size 属性 :  -- 作用 : 指定文本框内文本的最小值, 保证文本框内文本不会因为太小而看不见...UITextView 控件指定范围的文本内容将要被替换激发的方法; -- "- textViewDidChange : " 方法 : 文本内容发生改变, 激发该方法; -- "- textViewDidChangeSelection...: " 方法 : 选中 UITextView 控件内文本激发该方法; 4....自定义键盘附件 :  -- 作用 : 不是所有的应用都有导航栏, 没有导航栏的应用中, 需要有键盘附件来关闭键盘; -- 1.

6.7K20
  • iOS表情键盘的完整实现

    PPStickerDataManager类主要负责数据部分,用单例的形式,这样可以初始的时候只会读取一次plist文件中的所有表情信息;同时我们把输入框内容发到服务端以及从服务端请求到的都是纯文本的...其实系统已经提供好了接口给我们直接使用,UITextView和UITextField都有的inputView和inputAccessoryView就是用来实现自定义键盘的,这两个属性的定义如下: //...UITextView的NSTextAttachment(表情)默认可以进行拖拽交互,但是却导致拖动光标很容易触发这个交互(图示可以查看上面说到的微博国际版中的误触)。...} 与服务的的交互 我们输入框中输入的内容与服务端进行交互的时候都是用纯文本的,比如会把 "笑死了?"...转成 "笑死了[笑哭]" 这样的纯文本发到服务端,而不是直接发表情图片,向服务端请求内容的时候也是传回 "笑死了[笑哭]",然后客户端再根据正则匹配找出表情替换成对应的表情图片,然后显示到页面上。

    2K30

    史上最全的iOS之UITextView实现placeHolder占位文字的N种方法

    前言 iOS开发中,UITextField和UITextView是最常用的文本接受类和文本展示类的控件。UITextField和UITextView都输入文本,也都可以监听文本的改变。...而开发中,我们经常会遇到既要占位文字,又要可以多行展示并且可以滚动的控件,单纯的UITextField或者UITextView都不能满足这种产品的需求。...图(一) 方法一 1.把UITextView的text属性当成“placeholder”使用。 2.开始编辑的代理方法里清除“placeholder”。...方法三 1.自定义UITextView 2.给UITextView添加placeholder和placeholderColor属性 3.重写initWithFrame方法 4.添加通知监听文字改变...WSTextView类型,为了可以使用自定义的placeholder属性,省去了通过给控制器WSTextView类型属性这样一步。

    10.3K40

    iOS文本布局探讨之一——文本布局框架TextKit浅析

    iOS文本布局探讨之一——文本布局框架TextKit浅析 一、引言         iOS开发中,处理文本的视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView...TextKit是一个偏上层的开发框架,iOS7以上可用,使用它开发者可以方便灵活处理复杂的文本布局,满足开发中对文本布局的各种复杂需求。...二、TextKit框架的结构         界面进行文本的渲染,有下面几个必要条件: 1.要渲染展示的内容。 2.将内容渲染在某个视图上。 3.内容渲染在视图上的尺寸位置和形状。...四、了解NSTextContainer类         NSTextContainer可以简单理解为创建一个文本区块,文本内容将在这个区块中进行渲染,其中常用属性与方法如下: //初始方法 设置区块的尺寸...TextKit框架中在对文本进行布局,主要关注于3个方面: 1.字符的属性,例如颜色,字体等。 2.行与段落的属性,如缩进,行间距等。 3.文档属性,包括四周边距、文档尺寸等。

    1.8K10

    使用ueditor富文本编辑器导出文本内容,自定义各个标签的属性,以img标签添加最大宽度为例(vue框架)….

    现在在做的项目是一个对功能要求比较高的项目,同时也有SDK端的开发.项目中有一个场景就是pc端通过富文本编辑的内容要在SDK端显示,测试的时候发现有一些图片超出了手机的最大宽度,会出现一个横向的滚动条...,这样很影响体验.做显示这块的是公司做android和ios的同事,他们拿到的值富文本直接导出的json格式的html代码,因此他们很难再对代码进行二次处理,解决问题的源头又回到了我这里~~ 言归正传,...想要解决问题就要从标签的style属性着手;本人在追踪数据流的时候发现了导出编辑器内容的时候会把编辑器内容全部遍历一次的地方,遍历的数组大概就长这样(这其实是遍历之后的,理解我的意思就行) 那么重点来了...,以img标签为例,进一步处理的数据长这个样 遍历的时候会将attrs进行遍历,遍历时候大概就给拆成这样 这个时候就需要在style中插入就行了,这个地方ueditor.all.js文件的8726...,最后判断若是有style属性,style是否有max-width:100%;字段,若有,则跳过,避免每次导出的时候重复赋值.

    2.2K30

    iOS文本布局探讨之三——使用TextKit框架进行富文本布局

    CoreText是一个比较底层且十分强大的文本渲染框架,但是其使用起来并不是十分方便。较低版本的iOS系统中,要进行富文本排版十分困难。...iOS6中,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...试想,如果可以向一段文本中添加任意数据类型的文件,当用户点击这个文件,可以获取到文件数据并进行业务逻辑处理,这将十分酷。...这样富文本布局其实就不只局限于图文混排了,我们可以插入音频,插入视频,甚至插入任意自定义格式的数据。结合使用NSTextAttachment与UITextView,这些都能实现。...先看NSTextAttachment类中的一些常用属性与方法: //这个初始方法用于创建携带任意数据的文本附件 - (instancetype)initWithData:(nullable NSData

    2.1K20

    图文混排

    UITextView,UITextField、UILabel都已经基于Text Kit重新构建,所以它们都支持分页文本文本包装、富文本编辑、交互式文本着色、文本折叠和自定义截取等特性。...通常你需要创建NSTextStorage的子类来文本改变进行文本显示样式的更新。...4、NSTextContainer NSTextContainer描述了文本屏幕显示的几何区域,每个text container与一个具体的UITextView相关联。...然而,更高级的情况下,这个区域可能是一个无限大的矩形。例如,当渲染一本书,每一页都有最大的高度和宽度。文本容器会定义这个大小,并且不接受任何超出的文本。...5、UITextView UITextView作为显示出来的实际的文本视图, TextKit 中,文本视图有两个目的:第一,它是文本系统用来绘制的视图。

    1.5K30

    编码篇-iOS开发中的奇巧小伎

    中打开或禁用复制,剪切,选择,全选等功能 21.用stringByReplacingOccurrencesOfString方法去掉空格,实际只是做了字符替换操作,除了空格还可以替换其它字符,容易思维定势想不起来这个妙用...33、获取手机RAM容量 34、UITextView中显示html文本 35、选中textField或者textView所有文本(我这里以textView为例) 36、隐藏UITextView/UITextField...光标 37、当UITextView/UITextField中没有文字,禁用回车键 38、通知监听APP生命周期 39、获取collectionViewCell屏幕中的frame 40、UITextField...中显示html文本 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 30, 100, 199)]; textView.backgroundColor...image 46、将一个xib添加到另外一个xib // 假设你的自定义view名字为CustomView,你需要在CustomView.m中重写 `- (instancetype)initWithCoder

    5.3K10

    iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)

    《用户协议及隐私政策》 弹框的实现步骤: 1、自定义TextView,采用富文本属性进行内容设置attributedText(包括下划线NSUnderlineStyleSingle、超链接NSLinkAttributeName...key,用于本地 "Explain3" = "向您说明,使用我们的服务,我们如何收集、使用、储存和分享这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。...采用富文本属性进行内容设置attributedText 从csdn资源下载demo源码:https://download.csdn.net/download/u011018979/14026773 CSDN...文章:https://kunnan.blog.csdn.net/article/details/103902362 获取资源下载链接 1.1 采用富文本属性进行内容设置 attributedText 包括下划线...NSString *str = [NSString stringWithFormat:@"%@%@%@%@%@",str1,str2,str3,str4,str5]; //1、 设置富文本属性

    2K30

    iOS界面布局之三——纯代码的autoLayout及布局动画

    2.使用ASCLL字符创造艺术般的格式字符串约束         看到这个小标题是不是眼前一亮,这个标题不是我凭空想象出来的,apple的文档就是这么写的。十分可爱,对吧。...NSLayoutFormatDirectionRightToLeft = 2 << 16,            NSLayoutFormatDirectionMask = 0x3 << 16,   }; metrics参数是属性替换字典...,例如我们上边用到的距离左边界20,如果这个20是一个变量width,我们可以将20的地方换成width,然后配置这个字典:@{@"width":@20},这样,布局,系统会把width换成20。...,当我们文字多到一定行数,宽度会保持不变,文本框可以进行内容滑动,如果不用autolayout,这个功能会比较棘手一些,但是使用它,会发现这是如此的容易: @interface ViewController...四、通过动画改善更新约束的效果         这一点非常coll,上面我们已经实现了textView随文本的行数高度进行自适应,但是变化的效果十分生硬,还要apple的动画框架支持autolayout

    2.9K30

    iOS开发中利用runtime设置UITextView的默认文字

    https://blog.csdn.net/u010105969/article/details/75258532 大家都知道UITextField有一个属性placeholder是用来设置默认文字的...,但不知道大家知不知道UITextView也有一个类似的属性是可以用来设置默认文字的(反正在今天之前我是不知道的)。...之前项目中也遇到过设置UITextView的默认文字的功能,当初的做法是UITextView添加一个UILabel,让UILabel来显示UITextView的默认文字。...今天在看别人的博客的时候发现了UITextField有一个placeholderLabel的属性,这个属性UITextView的私有属性,我们可以通过runtime访问该属性。...我们可以通过创建一个UILabel,然后利用KVC将UITextView的placeholderLabel替换成我们自己创建的UILabel来达到设置UITextView默认文字的功能。

    60320

    IOS本地应用

    即将须要翻译的字符串替换成其它如果已经是翻译过的“译文”,能够用谷歌翻译替换一下或者是将全部元音字母替换成x。...以防止改动可本地属性、不可本地属性或者是全部属性,如图所看到的。然后将需要翻译的文本发给翻译人员或者是本地服务提供商去翻译即可了。...(6b)本地变更假设你做了一些本地变更,比方改变了已本地文本,那么就须要从头開始这个过程。并将这些变更发给本地人员。能够重用之前的字符串翻译,这么做会大大提高效率,但仍然非常麻烦。...重点是要讲我 github 找到的一个类,很棒,优雅的代码一直感动到我眼泪哗哗直流~~ 这是github的项目地址:HERE ,假设有找到很多其它更好的优秀代码,请知会一声。...不同的语言中可能会有不同。 3、注意数字和日期的格式(输入和输出都须要进行格式)。

    88200

    iOS学习——tableview中带编辑功能的cell键盘弹出遮挡和收起问题解决

    2.1 UITextField或UITextView点击之后的详细流程   在对cell进行封装和自定义的时候,我们需要考虑我们的UITextField或UITextView从点击编辑框到结束编辑的整个过程是怎么样的...下面的流程就是UITextField或UITextView整个编辑过程中的详细流程步骤: 成为第一响应者之前,文本框调用其代理的textFieldShouldBeginEditing:  方法来允许或阻止其第一响应者...,即即将注销第一响应者,系统会调用 textFieldShouldEndEditing: 方法 文本框注销第一响应者,对应的响应时间就是系统收回键盘,并且隐藏键盘时会发出 UIKeyboardWillHideNotification...2.2 自定义包含UITextField的UITableViewCell   首先,我们点击编辑区域的时候,获取到当前编辑区域相对屏幕的位置,这样方便我们判断整个tableview是否需要移以及需要移多少比较合适...cell的应用,首先,我们再主控制器中定义几个属性来保存我们键盘弹出tableview的contentOffset以及当前编辑cell的frame,然后应用自定义cell设定我们的两个回调block

    3.9K80

    iOS AutoLayout全解

    关于[VFL官网]详细知识,请查看官方的介绍 AutoLayout IB使用方式 为了让布局能够不同屏幕的size都能够表现正常,我们需要对其增加“约束”。...案例3 某个View距离父View的左侧20 案例2中白色View 20 宽高和Demo2中的宽高一样。 ? 然后,点击某个约束。 ? 对其处理 ?...接着我们UITableView中来使用我们自定义的UITableViewCell C1。...当非IB创建属性默认为YES;当IB创建View属性默认为NO。 案例2 水平方向上放4张图片,图片等分。 1,首先在页面上拖拽1个imageView,将它的宽高都设置成50。...StackView属性 在理解StackView,有几个属性需要理解: Axis: 这个属性是改变UIStackView中的排布方式的属性,其中有水平排布与垂直排布 Alignment:这个属性是其中子视图的位置摆布方式默认是填充摆布

    4.5K60
    领券