在 UITextView 内画一条线 - NSAttributedString

2024-07-01

我想在里面画一条可定制的线UITextView由一些文本组成(使用NSAttributedString)

这是我尝试过的

NSString *unicodeStr = [NSString stringWithFormat:@"%C%C%C", 0x00A0, 0x0009, 0x00A0]; //nbsp, tab, nbsp
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:unicodeStr];
NSRange strRange = NSMakeRange(0, str.length);

NSMutableParagraphStyle *const tabStyle = [[NSMutableParagraphStyle alloc] init];
tabStyle.headIndent = 16; //padding on left and right edges
tabStyle.firstLineHeadIndent = 16;
tabStyle.tailIndent = -16;
NSTextTab *listTab = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentCenter location:40 options:@{}]; //this is how long I want the line to be
tabStyle.tabStops = @[listTab];
[str  addAttribute:NSParagraphStyleAttributeName value:tabStyle range:strRange];
[str addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:strRange];

但无论我为制表位位置(本例中为 40)和 tailIndent(此处为 -16)提供什么值,该行都只遵循 headIndent 并跨越整个 UITextView 宽度(当然减去 headIndent)。

EDIT- 我很确定问题是因为我没有使用正确的 unicode 字符(尽管它们似乎是合乎逻辑的选择)。如果这给某人一个提示,如果我在第二个 nbsp 之后添加一个空格,即接近末尾,则选项卡仅限于单个选项卡长度


是你期望的结果吗?

你能试试这个吗:

NSTextTab *listTab = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentCenter location:self.textView.frame.size.width - tabStyle.firstLineHeadIndent + tabStyle.tailIndent options:@{}];

这是完整的代码:

- (void) viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  NSString *unicodeStr = @"\n\u00a0\t\t\n";
  NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:unicodeStr];
  NSRange strRange = NSMakeRange(0, str.length);

  NSMutableParagraphStyle *const tabStyle = [[NSMutableParagraphStyle alloc] init];
  tabStyle.headIndent = 16; //padding on left and right edges
  tabStyle.firstLineHeadIndent = 16;
  tabStyle.tailIndent = -70;
  NSTextTab *listTab = [[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentCenter location:self.textView.frame.size.width - tabStyle.headIndent + tabStyle.tailIndent options:@{}]; //this is how long I want the line to be
  tabStyle.tabStops = @[listTab];
  [str  addAttribute:NSParagraphStyleAttributeName value:tabStyle range:strRange];
  [str addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:strRange];

  NSAttributedString *htmlStr = [[NSAttributedString alloc] initWithData:[@"<h1>Lorem ipsum dolor sit er elit lamet</h1>" dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

  [str insertAttributedString:htmlStr atIndex:0];
  [str appendAttributedString:htmlStr];

  self.textView.attributedText = str;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UITextView 内画一条线 - NSAttributedString 的相关文章

  • 如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

    我正在使用 XCode 4 2 并使用故事板构建了我的 UI 我需要创建一个在 UITableView 上方和下方有内容的视图 我可以通过使用 UIViewController 来实现这一点 UITableViewController 不允
  • iOS-Charts 如何将 UIImage 放在点旁边

    我想使用 iOS Charts 和 Swift 来绘制一些折线图来显示数据 现在 我有一个要求 在每个点旁边放置一个小图标 现在我可以在图表上添加 UIImage 但问题是如何正确获取每个点的 CGPoint 坐标 如果我改变设备或设备类型
  • 如何在选项卡视图控制器故事板应用程序中添加更多选项卡? [复制]

    这个问题在这里已经有答案了 可能的重复 Xcode 4 2 选项卡式应用程序 添加新选项卡视图 https stackoverflow com questions 7952576 xcode 4 2 tabbed application a
  • 应用程序挂在 __psynch_mutexwait

    我们的应用程序似乎半随机地挂在 psynch mutexwait 处 它似乎与更新 CoreData 中存储的一堆数据的后台进程有关 但我完全无法弄清楚是谁锁定了导致死锁的原因 以下是 lldb 给我的完整堆栈跟踪 这显然是不完整的 并且线
  • 自定义 iOS 推送通知声音

    我一直面临一个问题 我在 iOS 中使用自定义声音实现了推送通知 它是一个 MP3 文件 当我在 iOS 5 中收到推送通知时它播放得很好 但在 iOS4 中 它不播放任何声音 你能帮我解决这个问题吗 代码是这样的 aps badge 10
  • Swift 错误:“找不到‘SKScene’的接口声明,其超类”

    免责声明 我通读了类似的问题 找不到解决我的问题的方法 我想将 SKScene 的子类添加到以前未使用 SpriteKit 的项目中 该项目是 ObjC 和 Swift 的混合体 子类是用 Swift 编写的 我做了什么 通过转到项目 gt
  • 升级到 Xcode 3.2.5 后出现“Base SDK Missing”

    所以我采取了升级到 Xcode 3 2 5 iPhone SDK 4 2 的步骤 现在我无法运行到设备 我现在总是在开发环境中看到这一点 在我当前的项目中 当进入项目设置时 我只能将 Base SDK 设置为 iOS 4 2 但这并不能改变
  • DispatchQueue.main.sync 返回 exc_bad_instruction Swift 3

    我想在我的应用程序中显示 UIActivityIndi catorView 但是当我调用sync方法从主线程 应用程序崩溃并出现错误 exc bad instruction code exc i386 invop subcode 0x0 我
  • 导航标题颜色更改问题

    当我弹出控制器时 我面临的导航标题颜色没有改变 请找到下面的代码 ProfilescreenVC swift override func viewWillAppear animated Bool super viewWillAppear a
  • ++ 已弃用,它将在 swift 3 中删除[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将在 swift 3 中被弃用 变量 现在可以写成 variable 1 我怎样才能重写 variable 请回忆一下之间的区别 varia
  • 解析 Apple Mach O-Linker 错误?

    我正在使用解析框架 突然出现 39 个错误 即使我删除框架 它仍然有错误 我已经检查了构建阶段 设置和路径 但没有任何效果 另外 我正在使用 xcode 4 6 3 我有一台过时的 macbook Ld Users anikakablan
  • iOS 应用程序在启动时因分发配置文件而崩溃? (libgdx + 机器人)

    我的 iOS 应用程序因同一原因被拒绝提交两次 启动时崩溃 鉴于日志 我猜它来自我的配置文件和签名身份 我正在将 Libgdx 1 5 x 与 RoboVM beta 4 和 Eclipse 一起使用 当我构建没有配置文件的应用程序时 它可
  • React Native 上无法识别的字体系列

    我在使用 React Native 时遇到了一个特殊的错误 在我的里面button js我在做 import Icon from react native vector icons MaterialIcons const icon Icon
  • 更改文本后无法更改 UISearchBar 取消按钮标题颜色。

    我使用此代码来更改 UISearchBar 取消按钮标题 void searchDisplayControllerWillBeginSearch UISearchDisplayController controller self searc
  • AVAudioSequencer 导致 Deinit/Segue 崩溃:“所需条件为 false:outputNode”

    每当对象被取消初始化时 例如 当执行展开转回到另一个 ViewController 时 以下代码会导致崩溃并出现以下错误 所需条件为 false AVAudioEngineGraph mm 4474 GetDefaultMusicDevic
  • NSOperationQueue 指定线程

    我想用一个NSOperationQueue调度 CoreData 操作 然而 操作队列的行为并不总是相同的 例如 它使用libdispatch在使用线程池的 iOS 4 0 OS 10 6 上 并且队列可能并不总是使用相同的线程 如NSMa
  • 寻找 MKOverlayPathRenderer 示例

    我正在尝试弄清楚如何使用新的MKOverlayPathRenderer class 在我之前使用的应用程序中MKOverlayPathView使用 iOS 6 SDK 构建时 但不幸的是 它似乎不适用于 iOS 7 SDK 所以我试图将我的
  • Cocos2D 与 iOS6 旋转错误

    我正在构建一个使用 cocos2D 的应用程序 我使用 iOS 5 开发了我的应用程序 现在当我使用 iOS 6 模拟器进行测试时 整个应用程序都会旋转 我的应用程序应该处于横向模式 但 iOS 6 将其旋转为纵向 任何建议都会有所帮助 谢
  • UItableViewCells 中的单选按钮逻辑

    嘿 我正在一个屏幕上工作 用户有选项组 例如 饮料 这是我的 tableView 中的部分标题 他们的选择是 7up 可乐 等 它们是我表格的单元格 现在 每个选项组选项 按顺序排列的每个单元格 都有一个单选按钮 我想实现这个 如果用户选择
  • 只需用矩形掩盖 UIView

    我想知道如何简单地屏蔽任何类型的 UIView 的可见区域 到目前为止 我读过的所有答案 教程都描述了使用图像 渐变或创建圆角进行遮罩 这比我所追求的要先进得多 示例 我有一个边界为 0 0 100 100 的 UIView 我想使用蒙版切

随机推荐

  • Qt:将事件发布到 QThread 的正确方法?

    在我的 Qt 应用程序中 我有一个主线程和一个工作线程 工作线程子类QThread并通过处理事件customEvent 这是主线程发送要由工作线程处理的事件的正确方法吗 QThread myWorkerThread QApplication
  • 使用 Matplotlib 和 TeX 实现均匀间距

    我正在为数学课绘制一些图表 但我无法在绘图图例中正确地获得和平定义的间距 我目前正在使用 对于 TeX 中的单个空间 但会遇到一种情况 其中一个空间比另一个空间稍远 这可能是由于左边的方程占用了多少空间 这是我的代码 import matp
  • 如何使用 Jsoup 仅删除文本中的 html 标签?

    我想使用 JSOUP 从文本中仅删除 html 标签 我使用了这里的解决方案 我之前关于 JSOUP 的问题 https stackoverflow com questions 33466557 jsoup remove only html
  • iOS-Charts 如何将 UIImage 放在点旁边

    我想使用 iOS Charts 和 Swift 来绘制一些折线图来显示数据 现在 我有一个要求 在每个点旁边放置一个小图标 现在我可以在图表上添加 UIImage 但问题是如何正确获取每个点的 CGPoint 坐标 如果我改变设备或设备类型
  • LAPACK正交化函数

    lapack 中是否有现成的例程来执行正交归一化 例如 Gram Schmidt 或 QR 方法的某些变体 如果不是 使用 lapack 执行正交归一化的建议方法是什么 就在这里 看着 sgeqrf single precision rea
  • Go 中将字符串转换为二进制

    在 Go 中如何将字符串转换为其二进制表示形式 Example 输入 A 输出 01000001 在我的测试中 fmt Sprintf b 75 仅适用于整数 将 1 个字符的字符串转换为字节以获得其数字表示形式 s A st fmt Sp
  • 在浏览器中输入有效网址时,React 路由不断重定向到登陆页面

    我有这个路由配置 它工作得很好 只有一件事一直让我烦恼 即使导航应用程序有效 当我转到地址栏并按 Enter 键时 它会将我重定向到 添加用户即使我不更改网址并按 Enter 键 这是我的路线配置 function AppRoutes se
  • OnGuard 许可

    最近 我研究了使用 OnGuard 来帮助诚实的人遵守他们的原则 我同意这里许多人表达的观点 即任何许可制度都无法保护您免受那些想要使用您的软件但不想付费的人的侵害 另一方面 我想避免让其他人太容易为我的程序创建有效密钥 研究完手册和示例后
  • 从 RoR 模型中获取两个随机元素

    我正在尝试使用 RoR 来做一些简单的事情 但在掌握基础知识方面遇到了一些困难 我最接近的背景是 ASP NET MVC 但我发现所有 RoR 教程都重点关注 Rails 真正擅长的内容 脚手架的东西 而不是如何制作自己的操作并让它们使用参
  • 如何在 MYSQL 中通过另一列选择具有 MAX(列值)、PARTITION 的行?

    我有一张球员表现表 CREATE TABLE TopTen id INT UNSIGNED PRIMARY KEY AUTO INCREMENT home INT UNSIGNED NOT NULL datetime DATETIME NO
  • 如何通过CLI / PUTTY访问AWS RDS?

    我是AWS新手 我可以通过putty访问EC2用户 像这样我如何通过 PUTTY 连接 AWS RDS 我有AWS RDS端点 如果我尝试如下 mysql h testing cx2wamr3cbzm us west 2 rds amazo
  • 连接到 javascript/node.js 中的 Gmail IMAP API

    我正在尝试通过其连接到 gmailIMAP API https developers google com google apps gmail oauth overview 我正在使用布鲁诺 莫伦西的节点 imap 库 https gith
  • 实体框架 - 将枚举的 ICollection 保存在数据库中

    我有一个具有 type 属性的类ICollection
  • 有效地将字符串(或元组)转换为 ctypes 数组

    我有一段代码 它采用 PIL 图像并将其转换为 ctypes 数组以传递给 C 函数 w px h px img size pixels struct unpack dI w px h px img convert RGBA tostrin
  • 将 ManualResetEvent 包装为可等待任务

    我想等待手动重置事件 并超时并观察取消 我想出了类似下面的东西 手动重置事件对象由我无法控制的 API 提供 有没有办法在不占用和阻塞 ThreadPool 线程的情况下实现这一点 static Task
  • 将 geom_text 与 ggplot2 中的 geom_vline 对齐

    I used vjust作为解决方法并详细阐述 通过尝试和错误可以接受的距离 但这有时非常耗时且变化 与字体大小和轴比例 有没有更好的方法来自动对齐示例中的文本 library ggplot2 ggplot data mtcars aes
  • 如何阻止richfaces风格?

    我开发了这个联系表格
  • 反应调试模式和正常模式之间的本机不同行为

    嗨 我有一个非常复杂的问题 所以我在 github 上为这个问题创建了一个新的存储库 所以你可以克隆它并看看问题是什么 https github com guitar9 hafas client example https github c
  • 如何在 iOS 8 中呈现半透明(半切)视图控制器

    在iOS 7中此方法没有问题 rootViewController modalPresentationStyle UIModalPresentationCurrentContext rootViewController presentVie
  • 在 UITextView 内画一条线 - NSAttributedString

    我想在里面画一条可定制的线UITextView由一些文本组成 使用NSAttributedString 这是我尝试过的 NSString unicodeStr NSString stringWithFormat C C C 0x00A0 0