【问题标题】:iphone - custom font costs extra memory?iphone - 自定义字体需要额外的内存?
【发布时间】:2011-09-17 05:08:44
【问题描述】:

我需要为我的 UILabel 使用外部自定义字体。我设法做到了,它正在工作。

我的应用中有 50 个 UILabel。每个 UILabel 都有我嵌入到我的应用程序中的相同自定义字体。

一次将所有 50 个 UILabel 加载到内存中。

每个 UILabel 的文本大约是 200 字节的 NSStrings,所有文本的总和大约是 1K - 2K 字节。我之前写的每个UILabel的文本都是1K - 2K,对不起。

我注意到一件事,如果我将自定义字体应用到 UILabel,内存成本非常高,比没有自定义字体多 30 - 40MB。

这可能吗?

我的应用非常简单,目前只显示 5 个页面,每个页面有 10 个 UILabel。所以我认为不会有其他地方或错误存在

【问题讨论】:

  • 正如乔所说,要在 UILabel 中显示的文本很多。但是你首先是如何应用字体的呢?我会发布一些代码来展示你是如何做到的,那里可能存在内存问题。
  • 我认为没有代码。我只是将自定义字体文件包含到我的项目中并在 info.plist 中进行设置
  • ...所以您的标签在 IB 中?否则,您将创建 UIFont 对象并将它们分配给您的标签。
  • 不,我手动创建标签,而不是来自 IB。是的,你是对的,我有一个全局 UIFont(静态)并将该 UIFont 分配给每个 UILabel

标签: iphone uilabel custom-font


【解决方案1】:

如果标签有 1k - 2k 的文本,我确信其中 50 个不能同时显示。这里采用的方法类似于 UITableView 的工作方式,当用户滚动、切换选项卡等时,只显示用户可见的标签并卸载其他标签。这将减少内存峰值,您只需为显示的标签加载自定义字体。

【讨论】:

  • 嗨,谢谢。即使我一次只显示 10 个(内存中有 40 个其他 UILabel 但隐藏),仍然不能在内存中容纳 50 个?你的意思是如果它的字体是自定义的,每个 UILabel 都会花费额外的内存?
  • 我认为字体只需要加载一次并在标签之间共享,但我对此并不积极。您可以使用系统字体和一些标签创建一个简单的项目并在仪器中监控,然后添加您的自定义字体并查看它有多少变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多