下划线覆盖 NSAttributedString 中的文本

2024-02-08

我正在尝试创建一个属性字符串,但下划线覆盖了我的文本,而不是出现在它后面:

有没有办法来解决这个问题?我正在使用以下代码:

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 10.0

let attributes = [NSForegroundColorAttributeName: UIColor.white,
                  NSUnderlineStyleAttributeName: NSUnderlineStyle.styleThick.rawValue,
                  NSUnderlineColorAttributeName: UIColor.red,
                  NSParagraphStyleAttributeName: paragraphStyle]

let attributedString = NSAttributedString(string: "Story", attributes: attributes)

Thanks!

EDIT:

提供更多背景信息:

我在 .xib 文件中的 UILabel 上显示属性字符串:

view.textLabel.attributedText = attributedString

标签具有以下字体:系统粗体 32.0

我正在 iPhone 6 - iOS 10.3 模拟器上运行代码。

EDIT 2:

我应该提到的是,标签在某些时候可能包含不止一行文本。这就是为什么 numberOfLines 设置为 0。

编辑3: 如果有人遇到这个问题——iOS 9 和 10 以及 UILabel 和 UITextView 上下划线的绘制方式似乎有很大差异。我最终不得不通过子类化 NSLayoutManager 自己绘制下划线。


是的,确实存在您所描述的问题。当您使用多行时它会出现UILabel,所以不仅设置numberOfLines为 0,但在其中键入多于 1 行。

Example

let selectedStringAttributes: [String: Any]
    = [NSFontAttributeName: UIFont.boldSystemFont(ofSize: 28),
       NSForegroundColorAttributeName: UIColor.green,
       NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue,
       NSUnderlineColorAttributeName: UIColor.green]

let label = UILabel(frame: CGRect(x: 100, y: 100, width: 500, height: 100))
label.numberOfLines = 0

label.attributedText = NSAttributedString(string: "String to test underline", attributes: selectedStringAttributes)

一切都会看起来很不错。

但如果你想使用这样的文本:

label.attributedText = NSAttributedString(string: "String to\ntest underline", attributes: selectedStringAttributes)

或者标签的宽度太短,比:

所以这种行为的原因当然是bug https://openradar.appspot.com/31174934 in NSAttributedString。正如雷达中提到的,有一个解决方法

您应该将此属性添加到您的NSAttributedString

NSBaselineOffsetAttributeName: 0

奇迹将会发生。

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

下划线覆盖 NSAttributedString 中的文本 的相关文章

  • 指定访问组时出现 KeychainItemWrapper 错误

    相当长一段时间以来 我一直在使用 KeychainItemWrapper 的 ARC 版本成功读取和写入私有钥匙串项目 我现在正在努力将我的 iOS 应用程序转换为使用共享访问组 以便我的 2 个共享相同应用程序前缀的应用程序可以访问钥匙串
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • 核心数据 NSFetchRequest 还获取实体的子对象

    我是 iOS 开发和 Core Data 的新手 我有一个父 NSManagedObject class Units interface Properties NSManagedObject property nonatomic retai
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 在 iOS5 中使用 UISegmentedControl 切换 ViewController

    我正在尝试一些非常简单的事情 但不知何故我无法让它发挥作用 我尝试做的就是使用 UISegmentedControl 在 2 个视图控制器之间切换 就像您可以在 App Store 应用程序的 突出显示 选项卡中看到的那样 我正在使用 iO
  • 列表不符合 Encodable

    因此 我正在使用领域 并且两个模型之间有以下关系 A unit has many tests Unit model class Unit Object Decodable objc dynamic var id String let tes
  • 径向渐变绘制性能 - OpenGL-ES 可以改进吗?

    我正在开发一个图像处理应用程序 它将径向渐变叠加在从照片库加载的图像上 在屏幕上 我有一个滑块可以动态地增大 减小径向渐变的半径 我发现模拟器上的性能很好 但在 iPhone 3G 或 3GS 上就很糟糕了much移动滑块时重绘速度较慢 我
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 如何在 Xcode 4 中在 .h 和 .m 之间切换

    刚刚安装的 Xcode 4 到目前为止一切顺利 除了 Apple 更改了所有键盘快捷键 有人知道如何在 h 和 m 之间切换吗 苹果改变了各种快捷键 但要在标头和实现之间切换 新的快捷键是 You can change it back to
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • 将子视图控制器的视图添加到父视图控制器的子视图

    我想添加一个表视图控制器作为容器视图控制器的子视图控制器 如下所示 根据苹果公司的查看控制器编程指南 http developer apple com library ios featuredarticles ViewControllerP
  • Swift 3 中是否提供内置内部函数?

    我可以在 Xcode 自动完成弹出窗口中看到各种内置函数 如 builtin popount builtin clz 等 我不确定这些是从哪里获取的 单击命令不会导致快速定义或任何文档 Swift 3 中是否有 builtin 或等效的内部
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • 使用 NSURLSessionDataTask 显示文件下载进度

    我想显示特定文件的文件下载进度 收到了多少字节 它与 NSURLSessionDownloadTask 配合得很好 我的问题是我想用 NSURLSessionDataTask 实现同样的效果 以下是将文件接收到 NSData 并写入文档文件
  • -[EAGLContext renderbufferStorage:fromDrawable:] 第二次失败?

    我正在开发一个 iOS openGL ES 应用程序 我正在做通常的 EAGLView ES2Render 的事情 启动时 使用以下代码成功创建 frambuffer BOOL createFramebuffers EAGLContext

随机推荐

  • 自定义 ACF Gutenberg 块未出现在 WPGraphQL 架构中

    我要去一个headless设置 WordPress 作为我的 CMS 为了实现这一目标 我使用了以下 WordPress 插件 Advanced Custom Fields PRO 使用专业版才能获得blocks option WP Gra
  • 如何配置一个网络中的容器相互连接(服务器 -> mysql)?

    我已经在 Windows 上运行了 ubuntu docker containers mysql 和 nodejs server app docker run d 网桥 name own p 80 3000 own latest docke
  • 基于 python 的 Dockerfile 抛出 locale.Error: 不支持的区域设置

    我在将主机 Centos7 区域设置传递给 python3 docker 映像时遇到问题 尽管我使用了下面链接中描述的建议 但图像中仅出现以下区域设置 C C UTF 8 POSIX 为什么 locale getpreferredencod
  • Perl:计算大量数据的相关系数时的编程效率

    编辑 链接现在应该可以使用 抱歉给您带来麻烦我有一个如下所示的文本文件 Name Test 1 Test 2 Test 3 Test 4 Test 5 Bob 86 83 86 80 23 Alice 38 90 100 53 32 Jil
  • twilio 如何获取可能的用户

    我从服务器检索了访问令牌并连接了 JavaScript SDK 聊天客户端 例如so https www twilio com docs chat initializing sdk clients javascript 1 我创建了一个类似
  • 未检测到 Web 服务?

    我正在尝试在下面托管此服务 该服务运行良好 但是当我在不同的 Visual Studio 运行时中打开一个新项目并尝试添加 Web 服务时 它找不到任何东西 不在指定的地址或本地计算机上的任何位置 下面的代码似乎只有当我在同一解决方案中运行
  • 如何使用JQuery选择第n个选项

    我有以下 HTML
  • 在 php 中将标头添加到 file_get_contents

    我是一个全新的 PHP 新手 想要一个客户端程序来调用 URL Web 服务 我正在使用 file get content 来获取数据 如何向使用 file get content 发出的请求添加额外的标头 我也在考虑使用 cURL 我想知
  • ios:如何显示“选择无线连接”弹出窗口?

    如果没有互联网连接 并且您使用 Ipad 或 Iphone 启动 Safari 应用程序 则会出现一个弹出窗口 显示 选择无线网络 有没有办法在我想要的时候强制此弹出窗口显示在我的应用程序中 问题是 我的应用程序中有一个按钮可以将用户连接到
  • Python / Selenium / Firefox:无法使用指定的配置文件路径启动 Firefox

    我尝试使用指定的配置文件启动 Firefox firefox profile webdriver FirefoxProfile Users p2mbot projects test firefox profile driver webdri
  • 按名称调用属性设置器的最佳方法是什么?

    我正在构建一个通用 UI 它可以连接到一系列底层对象属性 因此我想按名称调用 getter 和 setter 我尝试过使用 NSInspiration 也看到其他人使用setValue forKey 但我想用最快的方法 如果我保留对 NSI
  • 实体框架以及类似的地方[重复]

    这个问题在这里已经有答案了 我正在使用这个指令 db user db CBR User FirstOrDefault p gt p Codice Fiscale code 我想使用 like 运算符代替 来管理不区分大小写 怎样才能做到呢
  • 禁用 UIWebView 中特定 HTML 元素的数据检测器

    有谁知道是否可以仅针对特定的 HTML 元素禁用 UIWebView 中电话号码 电子邮件地址等的数据检测器 我希望检测器对于加载到 UIWebView 中的大部分内容都处于活动状态 但在某些区域禁用它 如果这是可能的 我假设它可以通过在加
  • 我的 AVPlayer 的内存在哪里?如何取回它?

    我正在同时播放大量视频AVPlayer 为了减少加载时间 我将相应的视图存储在NSCache 这种方法效果很好 直到达到一定数量的视频 视频就会停止播放 甚至不再出现 没有错误 日志或内存警告 特别是 我正在听UIApplicationDi
  • Fedora 19 上的 Metasploit msfconsole method_missing

    我使用以下命令在 Fedora 19 上安装了metasploit这份来自 Fedora 的指南 http fedoraproject org wiki Metasploit 完成我运行的所有步骤后微软控制台并得到以下错误 usr loca
  • nfsnobody 用户权限

    我已经在两台 CentOS 6 64 机器之间设置了 NFS 文件共享 在服务器上 共享的文件夹最初由 root 用户拥有 在客户端上 它显示为 nfsnobody 所有 当我尝试从客户端写入该文件夹时 出现权限错误 因此 我将服务器上的文
  • 将 google plus 登录添加到 ionic 应用程序

    我正在尝试将 google plus 登录添加到我的ionic app 点击此链接后出现错误 https ionicthemes com tutorials about google plus login with ionic framew
  • 推荐一个适合偶尔使用的好的实体关系图构建工具? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 免费软件是一个优点 您能否用一句话描述一下为什么它应该足够适合偶尔使用 编辑 你可能会检查这个很酷link http www refere
  • TCP握手可靠性

    我其实想知道 在 TCP 握手中 为什么客户端需要 ack 返回来完成握手 在syn和syn ack之后 双方都有足够的信息来启动数据 tcp仍然要求客户端的ack移动到已建立的状态 问题是 为什么这种三向握手是实现可靠性的必要和充分条件
  • 下划线覆盖 NSAttributedString 中的文本

    我正在尝试创建一个属性字符串 但下划线覆盖了我的文本 而不是出现在它后面 有没有办法来解决这个问题 我正在使用以下代码 let paragraphStyle NSMutableParagraphStyle paragraphStyle li