调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例

2024-01-27

在我的项目中,我使用迅捷3.0。现在我正在使用以下课程(UILabel 子类)根据 UILabel 框架高度调整字体大小。当 UILabel 框架发生更改时,layoutSubviews 会重新计算比例字体大小。

class Label: UILabel {

    // FIXME: - properties
    var fontSize: CGFloat = 0
    var frameHeight: CGFloat = 0

    // FIXME: - proportional font size adjustment
    override func layoutSubviews() {
        super.layoutSubviews()
        font = font.withSize(frame.size.height * (fontSize / frameHeight))
    }
}

如何使用:

private let id: Label = {
        let label = Label()
        label.textAlignment = .left
        label.numberOfLines = 1
        label.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
        label.textColor = UIColor(hex: 0x212121, alpha: 1)
        label.fontSize = 17
        label.frameHeight = 20
        label.clipsToBounds = true
        return label
    }()

现在我想将 UILabel 中的字符串的某些部分显示为粗体文本,并保留为常规文本。所以我在这个线程上找到了一些帮助:使用 swift 中的属性字符串将文本设为粗体 https://stackoverflow.com/questions/28496093/making-text-bold-using-attributed-string-in-swift

我正在使用 NSMutableAttributedString 的“Prajeet Shrestha's”扩展。

// "Prajeet Shrestha's" extension
extension NSMutableAttributedString {
    func bold(_ text:String) -> NSMutableAttributedString {
        let attrs:[String:AnyObject] = [NSFontAttributeName : UIFont(name: "AvenirNext-Medium", size: 12)!]
        let boldString = NSMutableAttributedString(string:"\(text)", attributes:attrs)
        self.append(boldString)
        return self
    }

    func normal(_ text:String)->NSMutableAttributedString {
        let normal =  NSAttributedString(string: text)
        self.append(normal)
        return self
    }
}

但我不明白如何改变这个字体大小NSMutableAttributedString,UILabel框架何时发生变化?

任何帮助表示赞赏。


Try this

Source 循环遍历 NSAttributedString 属性以增加字体大小 https://stackoverflow.com/questions/19386849/looping-through-nsattributedstring-attributes-to-increase-font-size

 mutableStringObj?.enumerateAttribute(NSFontAttributeName, in: NSRange(location: 0, length: mutableStringObj?.length), options: [], usingBlock: {(_ value: Any, _ range: NSRange, _ stop: Bool) -> Void in
            if value {
                var oldFont: UIFont? = (value as? UIFont)
                var newFont: UIFont? = oldFont?.withSize(CGFloat(oldFont?.pointSize * 2))
                res?.removeAttribute(NSFontAttributeName, range: range)
                res?.addAttribute(NSFontAttributeName, value: newFont, range: range)
            }
        })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例 的相关文章

  • UICollectionViewCell 拖动预览的自定义视图

    我正在尝试实现一项功能 用户可以将一个集合视图单元格拖放到另一个集合视图单元格上 但是 我想完全更改运动中物体的预览 以匹配我的应用程序的视觉隐喻 该项目没有移动 该项目包含的东西正在移动 例如 假设我的collectionview单元格显
  • CSS 安全区域属性在 iPhone X 上不起作用

    就我而言 我正在 iPhone X 上运行一个 Web 应用程序 我尝试在顶部添加一个填充 以使用 Webkit 的安全区域 css 属性将我的身体推到安全区域padding top constant safe area inset top
  • 为什么我需要 2 个或更多核心数据模型?

    我很想知道谁使用多个核心数据模型以及为什么 有什么好处 我正在开发一个应用程序 我认为我可以从多个模型中受益 但我不确定其他好处 我即将推出的应用程序将适用于 iPad 和 iPhone 的另一个版本 iPad 有 3 个主要内容 iPho
  • 如何在 iOS 中创建多行表格单元格?

    如何让第二个单元格扩展以适合文本而不是缩放文本 iOS 中有内置的方法可以做到这一点 还是我必须想出一些自制的解决方案 如果您查看 iOS 联系人应用程序 会发现有一个类似地址的框 但我找不到如何实现这一点 对于任何希望将来实现这一目标的人
  • 核心数据executeFetchRequest消耗大量内存

    我正在核心数据数据库中插入 cca 100 000 条记录 数据库包含 3 个实体 球员 俱乐部 球员俱乐部 实体之间存在关系 玩家 gt 玩家俱乐部俱乐部 在 PlayerClub 中插入时 我注意到插入大约 50 000 条记录后会消耗
  • 以编程方式更改自动布局约束后视图未更新

    事先我必须说 我实际上得到了我想要的可见效果 但不是以令人满意的方式 因为现在需要 打破 约束而不是正确更新 我有一个 ViewController 其中包含一个 UITableView 那个的高度tableView可以从 0 不可见 到它
  • 尽早检测有问题的 XIB 视图

    我的笔尖名称有一个拼写错误 当我推向导航控制器时 它在代码中被破坏了 弄清楚它并没有花太长时间 但我认为最好尽早断言格式良好 以便更容易弄清楚 问题是它不是零 它只是无法从笔尖正确地形成自己 在 initWithNib 之后是否有更好的断言
  • ios GPUImage,小尺寸图像处理效果不好?

    我正在尝试为 OCR 准备图像 我使用 GPUImage 来完成 代码工作正常 直到我裁剪图像 裁剪后我得到了糟糕的结果 作物面积 https www dropbox com s e3mlp25sl6m55yk IMG 0709 PNG h
  • 将时间舍入到最接近的三十秒

    我有一个应用程序 它显示每 30 秒过期的数据 准确地说 在 h m s 11 30 00 11 30 30 11 31 00 等 我可以获得当前时间 但我不确定如何计算现在到最近的三十秒之间的时间 我发现的所有内容都是 Objective
  • iOS9 Swift 文件使用 NSURL 创建 NSFileManager.createDirectoryAtPath

    在iOS9之前 我们创建了一个像这样的目录 let documentsPath NSSearchPathForDirectoriesInDomains DocumentDirectory UserDomainMask true 0 as S
  • tableView.cellForRowAtIndexPath(indexPath) 返回 nil

    我有一个循环遍历表视图的验证函数 问题是它在某个时刻返回 nil 单元格 for var section 0 section lt self tableView numberOfSections section for var row 0
  • 在 Swift 中计算两个 CLLocation 点之间的方位角 [重复]

    这个问题在这里已经有答案了 我正在尝试计算仅 swift 代码中两个 CLLocation 点之间的方位 我遇到了一些困难 并假设这是一个非常简单的函数 堆栈溢出似乎没有列出任何内容 func d2r degrees Double gt D
  • FIRApp 链接器错误 [“_OBJC_CLASS_$_FIRApp”]

    我已经搜索过 SO 和 Google 但找不到有效的答案 我已经在多个项目中使用了新的 Firebase Cocoapod 但是现在 当将其添加到不同的项目时 我收到以下错误 我正在使用 Xcode 7 3 1 和 cocoapods 1
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • iOS 版 Google 地图 sdk 中折线的轮廓

    我的要求是在地图上显示一条绿色折线 但当地图切换到卫星视图时 绿色折线变得不清楚 我无法改变折线的颜色 因此 为了将折线与背景 地图的卫星视图 区分开来 我需要为折线绘制白色轮廓 我浏览了 GMSPolyline 类的文档 但找不到任何可以
  • SwiftUI 自动调整底部工作表的大小

    SwiftUI 有很多底部工作表的示例 但是它们都指定了使用 GeometryReader 工作表可以增长到的某种类型的最大高度 我想要的是创建一个底部工作表 其高度仅与其中的内容一样高 我使用首选项键提出了下面的解决方案 但必须有更好的解
  • 出现错误:FT_Open_Face 失败:错误 2

    当我使用时出现以下错误CGContextDrawPDFPage context PDFPage 对于某些文件 有解决办法来解决这个问题吗 FT Open Face failed error 2 错误2看起来像errno2 这是 找不到文件
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • ios swift 如何将默认语言设置为阿拉伯语?

    我正在开发一个有两种语言的应用程序 即英语和阿拉伯语 我用英语编写了该应用程序 然后用阿拉伯语本地化了该应用程序 更改语言时需要重新启动应用程序 我唯一的问题是 第一次安装应用程序时如何将默认语言设置为阿拉伯语 我尝试在编辑方案部分将语言设
  • 在启动屏幕中执行代码已更新

    在原始启动屏幕中执行代码 https stackoverflow com questions 27642016 execute code in launch screen 现在默认的LaunchScreenXcode 项目中的文件已更改为

随机推荐

  • 我们如何冻结 Google Sheet 的一个单元格

    你能帮我冻结 Google 表格中的单元格吗 e 请参考我添加的图像复选框如果我勾选了该复选框一次 那么它不应该再次取消勾选 或者如果我在单元格中写入一些内容 它将被冻结 在 Google 表格中 无法 冻结 锁定 电子表格所有者编辑复选框
  • ActiveRecord 中的析取

    是否可以使用ActiveRecordnamed scopes 使用 sql 创建一个查询OR条款 当我使用 Model scope1 scope2 生成的查询是这些范围的结合 我回复是因为这是 活动记录分离 的第一个谷歌结果 使用 Rail
  • Noscript 标签、JavaScript 禁用警告和 Google 处罚

    当用户禁用 JavaScript 或使用 Noscript 等脚本阻止插件时 我一直使用 noscript 标签来显示警告 如果 JavaScript 被禁用 网站将无法正常运行 并且用户可能无法在没有警告的情况下弄清楚网站无法运行的原因
  • JavaFx 2 - TableView,返回所选项目

    我想从 TableView 中获取所选项目作为字符串 但它返回整个路径 在上图中 当我单击选择单元格时 我想要得到 Indicator selected is Shannon Entropy 当我得到 Indicator selected
  • 如何在Python中绘制k距离图

    如何在 DBSCAN 中绘制 在 python 中 给定最小点值的距离图 我正在寻找拐点和相应的 epsilon 值 在 sklearn 中 我没有看到任何返回此类距离的方法 我错过了什么吗 您可能想使用 numpy 提供的矩阵运算来加速距
  • 在 Angular 中创建新项目时,npm 抛出错误

    当我尝试使用 Git Bash 控制台使用 ng new 命令创建新的 Angular 项目时发生错误 我之前创建的项目从来没有出现过这个问题 这是调试日志的链接https drive google com open id 10ddECha
  • Metro UI:我正在切换 xaml 但图像未加载

    我有一个多 xaml 地铁应用程序 我想通过单击按钮在 xaml 之间切换 private void Button Click 1 object sender RoutedEventArgs e Window Current Content
  • 计算以零为底的累积和 (cumsum)

    我想修改cumsum功能 我希望将负值更改为 0 并且当有新值时D值不等于 0 然后使用D S 下面的例子 TD lt data frame product rep A 7 data seq as Date 2020 01 01 as Da
  • 缩短 JBoss Seam 应用程序中 REST 服务的路径

    我对 JBoss 和 Seam 还很陌生 我的项目有一个 REST 风格的服务 Path media Name mediaService public class MediaService GET Path test public Resp
  • AngularJS 未检测到 Access-Control-Allow-Origin 标头?

    我正在本地虚拟主机上运行一个角度应用程序 http foo app 8000 http foo app 8000 它正在向另一个本地 VirtualHost 发出请求 http bar app 8000 http bar app 8000
  • iisreset 后应用程序池未启动

    在开始之前 我知道使用 iisreset 被认为是不好的做法 但无论如何都不应该发生这种情况 我们有什么 多台在 Windows Server 2003 R2 64 和 32 位 上安装 IIS6 的计算机 多个 WCF Web 服务 NE
  • iOS 10 中使用自动调整单元格大小的 collectionViewContentSize

    在 iOS 10 之前 我有一个自调整大小的表视图 它仅由 UICollectionView 和使用标准 UICollectionViewFlowLayout 的自调整大小单元格组成 集合视图单元格的大小使用自动布局来调整 为了使表格单元格
  • HTML 下拉菜单自动宽度调整

    我创建了一个下拉菜单 该下拉菜单存在根据所选内容调整大小的问题 我使用以下 stackoverflow 答案作为调整下拉列表大小的灵感 https stackoverflow com a 20091985 3166468 https sta
  • cordova 无法看到 Android 目标

    我尝试为 Android 平台设置 Ionic Cordova 我安装了 JDK Android SDK 等 但正在运行cordova requirements给我 Requirements check results for androi
  • 在拖动时选择编辑文本中的一些文本

    我想在编辑文本中选择一些文本 但我不知道该怎么做 我需要这样的方法 当用户触摸屏幕然后拖动并离开屏幕时 拖动的文本将被选择 我的英语很差 所以不要介意 谢谢 textView EditText findViewById R id textv
  • PHP,从日期获取明天的日期

    我有一个 PHP 日期 格式为2013 01 22我想以相同的格式获取明天的日期 例如2013 01 23 这怎么可能用 PHP 实现呢 Use DateTime http php net manual en book datetime p
  • .Net毛伊岛如何连接

    对不起 我的英语不好 如何将 SQL Server 与 Net Maui 连接 我在网上尝试了很多方法 但都失败了 我尝试导入 Ado net 但显示错误 错误显示 该项目的目标框架不包含实体框架运行时汇编 首先 您应该配置应用程序常量 配
  • 从 CDN 包中删除 Babel(StandAlone) 警告消息

    我们在项目的某些部分使用 React JS CDN 出于质量目的 我们希望向客户提供无警告的代码 我们正在使用以下库 问题是我们在控制台中收到以下警告消息 您
  • 现在还值得学习微软基础课程(MFC)吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是微软技术的忠实粉丝 学习了很多 NET Framework 和 C 之类的编程语言 但我相信 NET 应用程序是在 NET Framewor
  • 调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例

    在我的项目中 我使用迅捷3 0 现在我正在使用以下课程 UILabel 子类 根据 UILabel 框架高度调整字体大小 当 UILabel 框架发生更改时 layoutSubviews 会重新计算比例字体大小 class Label UI