当前位置: 首页 > news >正文

UITextView删除原有字符串时,光标会上移并且光标会变高

代码运行效果如图:

  

import Foundationclass TestVC: UIViewController {override func viewDidLoad() {super.viewDidLoad()let testV = MyCustomTextView(frame: CGRect(x: 0, y: 130, width: SCREEN_WIDTH - 50, height: 170))self.view.addSubview(testV)testV.backgroundColor = .darkGraylet ps = NSMutableParagraphStyle()ps.lineSpacing = 7ps.alignment = .leftlet attr = NSMutableAttributedString(string: "字", attributes: [.font: UIFont.systemFont(ofSize: 20),.foregroundColor: UIColor.blue,.paragraphStyle: ps.copy()])testV.attributedText = attr}
}extension TestVC: UITextViewDelegate {func textViewDidChange(_ textView: UITextView) {let text = textView.text ?? ""let ps = NSMutableParagraphStyle()ps.lineSpacing = 7ps.alignment = .leftlet attr = NSMutableAttributedString(string: text, attributes: [.font: UIFont.systemFont(ofSize: 20),.foregroundColor: UIColor.blue,.paragraphStyle: ps.copy()])textView.attributedText = attr}
}class MyCustomTextView: UITextView {override func caretRect(for position: UITextPosition) -> CGRect {var rect = super.caretRect(for: position)var text = self.text// 计算字符串为空时的textView rect, 避免删完字符串时出现的光标变高和上移问题// 如果自己还要做换行效果, 那么只在self.text.isEmpty时用sizeToFitif self.text.isEmpty {//  用"AAgg"可以算出字符串最大高度, 因为一个往上占据位置, 一个往下占据位置.text = "AAgg"}let label = UILabel()label.font = self.fontlabel.text = textlabel.sizeToFit()rect.size.height = label.heightreturn rect}
}

相关文章:

UITextView删除原有字符串时,光标会上移并且光标会变高

代码运行效果如图: import Foundationclass TestVC: UIViewController {override func viewDidLoad() {super.viewDidLoad()let testV MyCustomTextView(frame: CGRect(x: 0, y: 130, width: SCREEN_WIDTH - 50, height: 170))self.view.addSubview(testV)testV.ba…...

python入门 介绍及变量的使用

1.python介绍 python 是一门计算机语言 常见的计算机语言:python、java、C语言。。。 什么是计算机语言:就是让计算机知道你想干什么,把你的需求使用它能听懂的语言说出来 中国也有一门计算机语言:易语言 能认为是语言的本质上…...

51单片机-按键

1、独立按键 1.1、按键介绍 轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。 1.2、独立按键原理 按键在闭合和断开时,触点会存在抖动现象。P2\P3\P1都是准双向IO口,…...

Java 8 至 Java 23 版本特性对比表

Java现在发布的版本很快,每年两个,但是真正会被大规模使用的是三年一个的TLS版本。 版本年份LTS关键特性影响力等级Java 82014✅Lambda 表达式、Stream API、方法引用、接口默认方法、Optional 类⭐⭐⭐⭐⭐Java 92017❌模块化系统(JPMS&…...

在wsl环境中配置和开发verilog(一种比较新颖的verilog开发指南)

WSL是windows中自带的linux子系统,笔者在若干月前首次接触其便爱不释手,verilog作为一种硬件解释语言,可否像c语言那样被游刃有余的编译和运行呢,笔者这次大胆的尝试在WSL环境VSCODEIverilog开发verilog。 首先默认按照了WSL和VS…...

AI学习指南HuggingFace篇-Hugging Face 的核心工具

一、引言 Hugging Face作为AI领域的重要参与者,提供了许多强大的工具,极大地简化了自然语言处理(NLP)任务的开发流程。其中,Transformers、Datasets 和 Tokenizers 是Hugging Face的三大核心工具。本文将深入介绍这些工具的作用、功能以及它们如何相互配合,帮助读者更好…...

DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度

前言 最近在做项目时遇到一个需求,需要将升级的文件压缩成zip,再进行传输; 通过网络调研,有许多方式可以实现,例如QT私有模块的ZipReader、QZipWriter;或者第三方库zlib或者libzip或者quazip等&#xff1…...

深入解析桥接模式:软件设计中的解耦利器

桥接模式:软件设计中的解耦利器 在软件开发的复杂世界中,设计模式是开发者解决常见问题的有力工具。桥接模式作为一种重要的结构型设计模式,在处理抽象与实现的关系时展现出独特的优势,它能够巧妙地将抽象部分与实现部分分离&…...

MYSQL-数据库-DDL-DML-DQL-DCL-基础学习

MySql概念: 建立在关系模型基础上,有多张相互连接的二维表组成的数据库 SQL通用语法: 1.SQL语句可以单行或多行书写,以分号结尾 2.SQL语句可以使用空格/缩进来增强语句的可读性 3.MySQL数据库的SQL语句不区分大小写,关…...

rv1126解码的一些原理

rv1126解码篇中,出现最重要的两个api一个是,send_vdec_thread线程里面调用的RK_MPI_SYS_SendMediaBuffer,把数据发到解码器。另外一个是read_vdec_thread线程的RK_MPI_SYS_GetMediaBuffer获取解码器里面的数据。 今天想探讨一下他的底层原理。…...

二级公共基础之数据结构与算法篇(七)排序技术

目录 前言 一、交换类排序 1.冒泡排序法 1. 冒泡排序的思想 2. 冒泡排序的实现步骤 3. 示例 4. 冒泡排序的特点 2.快速排序 1. 快速排序的核心思想 2. 快速排序的实现步骤 3. 示例代码(C语言) 4. 快速排序的特点 二、插入类排序 1. 简单插入排序 1.简单插入排…...

深蕾科技智能多媒体SoC产品助力“DataEye剧查查之夜”微短剧盛会

深蕾科技助力微短剧盛会 深圳湾“DataEye剧查查之夜”微短剧盛会,于2025年2月20日18:00点,在深圳湾盛大开启。作为第十四届中国国际新媒体短片节的重要组成部分,“剧查查之夜”汇聚了微短剧行业的顶尖力量,吸引了众多大咖齐聚一堂…...

Apache Doris 实现毫秒级查询响应

1. 引言 1.1 数据分析的重要性 随着大数据时代的到来,企业对实时数据分析的需求日益增长。快速、准确地获取数据洞察成为企业在竞争中脱颖而出的关键。传统的数据库系统在处理大规模数据时往往面临性能瓶颈,难以满足实时分析的需求。例如,一个电商公司需要实时监控销售数据…...

计算机考研之数据结构:P 问题和 NP 问题

在算法的时间复杂度估算中,通常教材和题目中的估算结果包括: O ( 1 ) , O ( log ⁡ n ) , O ( n ) , O ( n ) , O ( n log ⁡ n ) , O ( n 2 ) , O ( n 3 ) , O ( log ⁡ log ⁡ n ) O(1),O(\log{n}),O(\sqrt{n}),O(n),O(n\log{n}),O(n^2),O(n^3),O(\log…...

新数据结构(13)——I/O

字符流 字符输入流(Reader) 字符输入流用于从数据源(如文件、字符串等)读取字符数据。Reader 是所有字符输入流的抽象基类。 常用实现类 FileReader 用于从文件中读取字符数据。 InputStreamReader 将字节流转换为字符流&…...

PySide6学习专栏(四):用多线程完成复杂计算任务

如果计程序中要处理一个非常庞大的数据集中的数据,且数据处理计算很复杂,造成数据处理占用大量时间和CPU资源,如果不用多线程,仅在主进程中来处理数据,将会使整个程序卡死,必须采用多线程来处理这些数据是唯…...

Python多线程编程理解面试题解析

一、多线程介绍 Python 的多线程是一种实现并发编程的方式,允许程序同时执行多个任务。然而,由于 Python 的全局解释器锁(GIL)的存在,多线程在某些场景下可能无法充分利用多核 CPU 的性能。以下是对 Python 多线程的理…...

Flutter - 初体验

项目文件目录结构介绍 注:创建 Flutter 项目名称不要包含特殊字符,不要使用驼峰标识 // TODO 开发中运行一个 Flutter 三种启动方式 Run 冷启动从零开始启动Hot Reload 热重载执行 build 方法Hot Restart 热重启重新运行整个 APP 先看效果&#xff0c…...

使用最广泛的Web应用架构

目前互联网中没有一种绝对使用最广泛的Web应用架构,不同的架构在不同的场景和企业中都有广泛应用,但微服务架构和Serverless架构是当前较为主流和广泛使用的架构。以下是对这两种架构的具体分析: 微服务架构 适用场景广泛 大型互联网公司&a…...

从系统卡顿到流畅体验:用WinUtil一键优化你的Windows系统

从系统卡顿到流畅体验:用WinUtil一键优化你的Windows系统 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否曾经花费数小时手…...

AI批量翻译txt文档工具:功能详解与使用指南

对于需要处理大量外文资料的用户来说,批量翻译文档是个常见需求。本文介绍一款基于AI的文档翻译工具,包含完整功能解析和操作指南。 工具能做什么 一句话总结:用AI批量翻译文件夹内的txt、md、srt文档,支持多语言、术语表、翻译缓…...

Layerdivider:让每张图片都能像洋葱一样层层剥开的魔法工具

Layerdivider:让每张图片都能像洋葱一样层层剥开的魔法工具 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 想象一下,你有一张美丽…...

分光计实验:从原理到实践,手把手教你测量三棱镜折射率

1. 分光计实验入门:为什么测量三棱镜折射率这么重要? 第一次接触分光计实验时,我和大多数同学一样满头雾水——这个长得像显微镜的金属仪器,怎么会有二十多个调节旋钮?直到亲手完成三棱镜折射率测量,才明白…...

GESP2023年6月认证C++三级( 第一部分选择题(1-8))

🏰 第一题:程序变身魔法1、🧙‍♂️老师说:你写了一段程序,就像写了一张“魔法咒语纸”。但是电脑看不懂人类语言,它只懂“机器语言”。2、❓问题:要让程序真正跑起来,需要哪一步&am…...

ATF-54143 LNA设计复盘:我是如何权衡噪声、增益与稳定性的(附完整ADS工程)

ATF-54143 LNA设计复盘:噪声、增益与稳定性的深度权衡 在2.4GHz频段的低噪声放大器(LNA)设计中,工程师往往面临噪声系数、增益和稳定性之间的复杂权衡。本文将基于ATF-54143晶体管,分享我在实际项目中如何通过系统化的设计流程解决这些核心矛…...

PyTorch深度学习框架核心技术与实战应用

1. PyTorch与深度学习全景图PyTorch作为当前最活跃的深度学习框架之一,其设计哲学与实现方式完美诠释了现代深度学习的核心要义。我第一次接触PyTorch是在2017年处理一个图像分割项目时,当时被其动态计算图的灵活性所震撼——这种设计让研究者能够像写Py…...

技术深度解析:IDR - Delphi二进制逆向工程的静态分析架构

技术深度解析:IDR - Delphi二进制逆向工程的静态分析架构 【免费下载链接】IDR Interactive Delphi Reconstructor 项目地址: https://gitcode.com/gh_mirrors/id/IDR IDR(Interactive Delphi Reconstructor)作为一款专注于Delphi编译…...

遥感数据处理避坑指南:MOD13A1 NDVI计算植被覆盖度,我踩过的这些坑你别再踩

遥感数据处理实战:MOD13A1 NDVI高效计算植被覆盖度的7个关键技巧 第一次处理MOD13A1数据时,我盯着屏幕上那些不完整的镶嵌结果和莫名其妙的负值,差点把键盘摔了。后来才发现,这些看似玄学的问题,其实都有明确的技术根源…...

1篇3章9节:搭建本地AI知识库,Obsidian + DripSick

在过去的几年里,AI工具如雨后春笋般出现,从ChatGPT到Claude、Gemini,再到各种嵌入式AI助手,写作、编程、办公、教学的方式正被悄然改变。而在众多AI使用场景中,有一个应用方式正在悄悄走红,那就是——本地知识库。简单来说,本地知识库就像是你的“数字大脑”。你把所有的…...