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

如何将选定文本的边界作为CGRect获取?

在iOS开发中,可以使用UITextRangeUITextPosition来获取选定文本的边界。下面是获取选定文本边界的步骤:

  1. 首先,获取当前活动的UITextViewUITextField对象的选定文本范围(UITextRange对象)。
  2. 使用选定文本范围的startend属性获取选定文本的起始位置和结束位置(UITextPosition对象)。
  3. 使用UITextViewUITextField对象的caretRect(for:)方法,传入起始位置或结束位置作为参数,获取选定文本的边界矩形(CGRect对象)。

以下是一个示例代码,演示如何将选定文本的边界作为CGRect获取:

代码语言:txt
复制
// 假设textView是一个UITextView对象

// 获取选定文本范围
if let selectedRange = textView.selectedTextRange {
    // 获取选定文本的起始位置和结束位置
    let startPosition = selectedRange.start
    let endPosition = selectedRange.end
    
    // 获取选定文本的边界矩形
    let startRect = textView.caretRect(for: startPosition)
    let endRect = textView.caretRect(for: endPosition)
    
    // 将边界矩形合并为一个包围矩形
    let boundingRect = startRect.union(endRect)
    
    // boundingRect即为选定文本的边界矩形
    print(boundingRect)
}

这样,你就可以通过以上步骤获取选定文本的边界矩形。在实际应用中,你可以根据这个边界矩形来进行一些自定义的操作,比如绘制高亮效果、获取选定文本的位置信息等。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

iOS-自定义button详解

= YES; } return ccButton; } 重写button几个边界方法,return语句后面的数字,是我打断点得到这几个函数执行顺序 // 返回背景边界(background..., 0, 100, 100) 此时在返回title view边界和image view边界函数中contentRect参数值为{{0,0},{100,100}} -(CGRect)titleRectForContentRect...返回标题边界 -(CGRect)titleRectForContentRect:(CGRect)contentRect{ // 这contentRect就是buttonframe,我们返回标题..., 20); } // 返回图片边界 -(CGRect)imageRectForContentRect:(CGRect)contentRect{ // buttonimage view 是正方形...,由于title占了20高了,所以取height - 20和width中最小作为image view边长 // 如果图片位置是根据文字来布局,这里可以通过self.titleLabel.text

91330

IOS触摸事件分发机制详解

怎么在一个页面处理手绘、表情拖动放缩、文本编辑三种消息 阅读本文,你会明白两个问题:IOS如何找到响应者、响应者是如何做出响应,明白这两个问题你就能解决类似上述疑难杂症。...原理详解 IOS把用户触发事件打包成一个UIEvent对象,作为事件传递消息载体,放入当前活跃APP消息队列中,然后通过Hit-Testing来找到响应者,响应者通过响应链传递做出响应,这就是IOS...IOS把屏幕监测到点击事件用UITouch对象来表示,最终被封装成UIEvent作为事件消息载体在响应链上传递。...Hit-Testing就完美的解决了这个问题,通过检测触摸点是否在相关视图边界范围内,如果在,就继续递归检测该视图所有子视图,离用户最近那个视图边界如果包含触摸点,那么它就是我们要找Hit-Test...应用 扩大按钮点击区域 当视图调用 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 进行边界检测时候,重写该方法扩大视图检测边界

3.5K90

ios_UITextField-修改占位文字和光标的颜色,大小

一.设置占位文字颜色 方法一:利用富文本 /** 手机号输入框 */ @property (weak, nonatomic) IBOutlet UITextField *phoneTextField;...= [NSMutableDictionary dictionary]; // 设置富文本对象颜色 attributes[NSForegroundColorAttributeName]...:@"_placeholderLabel.textColor"]; 注意:_placeholderLabel.textColor是不可乱写哦,我们是怎么获取到这个属性呢?...请看下文: 查看打印,找出可能属性名称,试试便知; 完整代码:自定义UITextField,获取到焦点(编辑状态)时候是白色,失去焦点(非编辑状态)时候是灰色: 方法三.将占位文字画上去...重写-(CGRect)placeholderRectForBounds:(CGRect)bounds;方法 可以用来设置光标与占位间距 扩充:系统还提供了很多类似的方法 – textRectForBounds

1.1K10

CoreText实现图文混排之文字环绕及点击算法

CoreText 这篇博客是以前两篇博客作为知识铺垫,如果没有看过前两篇博客童靴建议你去补票。当然本身你就了解CoreText相关知识的话也可以直接看本篇文章。...之前文章老司机讲过,我们在drawRect中绘制文本时候主要是根据Path去绘制。...也算真正实现所谓图文混排了。 ---- 点击事件获取优化算法 首先老司机来讲一下目前老司机了解到几种获取点击事件方式。...这个方法是获取当前点在所在文字处于当前绘制文本索引值。事实上如果没有一些其他因素的话,能使用这个方法是最简便快捷。然而老司机为什么没有使用这个方法去获取点击事件呢?请看下面的动图? ?...再通过一些逻辑将不同活动文本区别开来。由于是demo所以一切从简老司机没有说怎么区分活动文本,给个思路,就是你给click属性绑定value就可以用作区分(这句好拗口)。

1.2K20

CoreText实现图文混排之尺寸估算及文本选择

回头看看,距离CoreText系列首发过去一年也多了,看到第一篇文章即将超越1.3W点击量老司机也是压力越来越大,毕竟作为瞎逼逼杰出代表老司机偶尔也要正经一下。...constraints : 尺寸约束,就是尺寸估算最大边界,其使用方法类似于[UIView sizeThatFits:size] 中size用法。 * fitRange : 约束内文本范围。...self.text.length; NSMutableAttributedString * mAStr = nil; if (needDrawString) { ///获取要绘制文本...并且每个包装类包装类之间是一个类似于链表结构,用于快速获取上一个或下一个对应Line、Run或者Glyph。...有了DWCoreTextLayout对象存在,我们能获取每个字形对应尺寸,也就能获取一段文字所对应尺寸,只要在对应尺寸出覆盖淡蓝色选择遮罩层即可。

92620

iOS开发——定制UITextField

在iOS中UITextField这个控件作为文本输入控件一定是使用率最高几个控件之一,而iOS提供默认原始TextField造型肯定在开发时很难满足我们要求,原因很简单,不够美观,实在太单调。...可是placeholde默认属性是紧贴文本输入框,而且字体以及字体大小也不美观,于是我们可以这么来设置placeholder //控制placeHolder位置,左右缩20 -(CGRect)placeholderRectForBounds...:(CGRect)bounds { return CGRectInset(bounds,0,0); } //控制编辑文本位置 -(CGRect)editingRectForBounds:(...CGRect)bounds { return CGRectInset( bounds, 20, 0); } //控制显示文本位置 -(CGRect)textRectForBounds:(CGRect...位置之后,我们也要相应调整文本显示位置,以及在编辑完成后,文本显示在输入框位置。

1.5K40

UITableViewCell系列之(一)让你cell支持二次编辑

如下图,先来看看我所说可编辑cell效果: ? enableEditCell.gif 开发中,有时候需要对tableView某一行内容(通常是文本)进行二次编辑。...另外一种方法是直接在当前控制器(界面)上以动画(甚至是没有动画)形式弹出一个UITextView,在UITextView上修改文本内容,修改完成后再隐藏/移除UITextView,把内容重新显示到tableView...思路如下: 注意:以下操作全部是在didSelectRowAtIndexPath:方法中进行 获取点击那一行cell在tableView坐标系上frame,并转换为view坐标系上frame,...在UITextView上编辑文本,编辑完成后再跟新数据,刷新tableView。...获取点击那一行在view上frame CGRect rectInView = [self getCellRectInView:self.view forIndexPath:indexPath

7.8K40

CoreText实现图文混排之点击事件

---- 分段解析 -touchesBegan 之所以把他放在首位,是因为他作为整个view响应点击事件入口扮演者十分重要角色。...是这样,在我们使用过程中,大部分场景是如下过程: 给整段富文本添加属性,事件等 插入图片 给图片设置点击事件 正是因为这样,我们可以看出逻辑上图片响应事件优先级明显是要高于文字。...CTLineRange 获取每个CTLine中包含文本在整串富文本范围。...将所有CTLine中字符串范围保存下来放入数组备用。 for (int i = 0; i < _length; i ++) 这个for循环用来遍历富文本每一个字符。...CTRunGetStringRange()获得CTRun在富文本范围 CTRunGetTypographicBounds(,,,,)获得对应CTRun尺寸信息 中间用了第六个工具方法 -(BOOL

98820

图文混排

进行初始化,作为CTFrame对象生产工厂,负责根据path创建对应CTFrame CTFrameRef:画布,包含多个CTLine CTLineRef:每一行就是一个CTLine CTRunRef...:每一行可以分为多个属性相同小段,每一个小段就是一个CTRun 先来一个简单文本排版: 获取Context->变换坐标->设置绘制路劲->创建富文本字符串->由富文本字符串转成framesetter...3、NSLayoutManager NSLayoutManager作为文本控件中排版引擎接收保存文本并在屏幕上渲染出来。...5、UITextView UITextView作为显示出来实际文本视图,在 TextKit 中,文本视图有两个目的:第一,它是文本系统用来绘制视图。...文本视图它自己并不会做任何绘制;它仅仅提供一个供其它类绘制区域。作为视图层级机构中唯一组件,第二个目的是处理所有的用户交互。

1.5K30

SwiftUI 布局协议 - Part 1

结果呢,我们将会有一个超出边界子视图,但是周围视图不会被图片额外使用空间影响。在下面这个例子中,黑色边框展示空间是提供给图片。...例如,我们看见文本获取需求空间后如何处置多余不需要空间,然而,如果需求空间大于提供,就可能会发生一些事情,具体取决于你如何配置你视图。...例如,可能会根据提供尺寸截取文本,或者在提供宽度内垂直展示文本,如果你使用 fixedSize 修改甚至可能超出屏幕就像例子中图片一样。...注意,这表明容器是作为一个整体如何与其余视图对齐。它对容器内视图没有任何影响。...这样, SwiftUI 就会知道如何将其与周围视图分开,为此,你需要实现布局方法 spacing(subviews:cache:)。

3.3K10

中国提出分割天花板 | 精度相当,速度提升50倍!

这使得它能够针对视觉分割任务进行定制,并且可以在较小数量参数上更快地收敛。 检测分支输出类别和边界框,而分割分支输出k个原型(在FastSAM中默认为32)以及k个掩码系数。...它主要涉及点提示、框提示和文本提示使用。 Point prompt包括将选定点与从第一阶段获得各种遮罩进行匹配。目标是确定点所在遮罩。与SAM类似,我们在方法中使用前地面/背景点作为提示。...此外,我们还利用形态学运算来提高掩模合并性能。 Box prompt长方体提示涉及在选定长方体和与第一阶段中各种遮罩相对应边界框之间执行并集交集(IoU)匹配。...其目的是用所选框识别具有最高IoU分数掩码,从而选择感兴趣对象。 Text prompt在文本提示情况下,使用CLIP模型提取文本相应文本嵌入。...如何将CLIP嵌入提取器组合到FastSAM骨干网络中,仍然是关于模型压缩一个有趣问题。 05 亲自上手实践 基于提供代码,自己进行了搭建。

26320

iOS开发CoreGraphics核心图形框架之二——深入理解图形上下文

首先任何UIView和其子类视图控件都有一个drawRect方法,当视图将要被绘制时会调用这个方法,在drawRect方法中开发者可以获取到当前视图图形上下文,通过这个图形上下文可以对视图进行自定义绘制...与操作PDF图形上下文相关方法如下: //这个方法用于创建一个PDF图形上下文 将其入栈 作为当前图形上下文 /* 其中path为PDF文件写入路径 bounds为PDF文档尺寸 decumentInfo...(CGContextRef cg_nullable c); //获取路径尺寸 CGRect CGContextGetPathBoundingBox(CGContextRef cg_nullable c...(CGContextRef cg_nullable c, CGRect rect, CGImageRef cg_nullable mask); //获取裁剪区域尺寸 CGRect CGContextGetClipBoundingBox...c, CGRect rect, CGImageRef cg_nullable image); //获取上下文渲染图像质量 CGInterpolationQuality CGContextGetInterpolationQuality

2.6K20
领券