【问题标题】:iOS5 fancy icons (emoji?) for special unicode chars - not what I want用于特殊 unicode 字符的 iOS5 花哨图标(表情符号?) - 不是我想要的
【发布时间】:2011-12-24 15:29:48
【问题描述】:

我一直认为,当我需要箭头或子弹或其他东西时,我可以在字符串中使用简单的标志性 unicode 字符,这很棒。字形将以与字符串的其余部分相同的颜色呈现,并带有漂亮的简单和干净的图标。我可以使用 XCode 中编辑菜单上 Mac 的“特殊字符”对话框预览它们的外观。

在 iOS5 中,这些字形以全彩呈现,并不简单和干净。我相信这些是表情符号图标?

我正在寻找有关此更改的解释,以及理想情况下如何强制 iOS5 恢复到 iOS2 - iOS4 行为。

这是一个例子:@"← left arrow, right arrow → airplane ✈";

编辑

显然,用于呈现文本的 NSString UIKit 扩展 (drawAtPoint: / drawInRect:) 不会表现出这种行为。所以也许这是一个 UILabel 的事情?具体来说,我在 UISegmentControl 段按钮和 UILabel 中注意到它。

【问题讨论】:

  • 我建议提交一个错误。很多时候您都需要 Unicode 字符,这应该在应用程序控制之下。

标签: ios unicode ios5 emoji


【解决方案1】:

这不是错误,它取决于使用的字体。当您在字符串中使用所选字体中不可用的字符时,iOS 会自动用另一种字体替换字形。

系统字体 (Helvetica) 中没有这些字符,所以我猜测 Apple 已经更改了后备字体列表,因此 Emoji 的排名高于以前用于这些字符的后备字体。

要解决此问题,请找到 a) 包含所需字符版本且 b) 在 iPhone 上可用的字体,并将标签设置为使用该字体而不是默认系统字体。

或者,您可以创建一个 UILabel 子类并覆盖 drawRect 方法,以便它使用 drawAtPoint/drawInRect 方法来绘制字符串。

【讨论】:

  • 我不认为它本身是一个错误。使用不同的“后备”字体绝对是一种行为改变。我一直在使用 Hiragino Kaku Gothic ProN W6 15.0,因为它似乎具有所有“旧”符号。但这只有在我不需要混合文本和符号时才可以接受。
  • 自定义 UILabel 似乎是最简单的选择。如果你不想自己滚动,你可以试试我的 FXLabel (github.com/nicklockwood/FXLabel),它使用了核心的图形字符串绘制方法,所以想必不会有这个问题。
  • 看起来不错,谢谢。不过,它对按钮或其他控件没有帮助:(
  • 将自定义标签作为子视图注入到 UIButton 中,然后将其全部包装在可重用的子类中是相对容易的。
  • 为此,您可以使用 [[UIBarItem alloc] initWithCustomView:....]。如果你想让它看起来像一个普通的 UIBarButtonItem,一个巧妙的技巧是使用 UISegmentedControl 作为你的自定义视图,其中 numberOfSegments 设置为 1,控件样式为 UISegmentedControlStyleBar。这看起来与常规 UIBarButtonItem 相同,但因为它是一个视图,所以您可以添加子视图(例如 FXLabel)。
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 2019-04-22
  • 2022-01-22
  • 2016-02-20
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
相关资源
最近更新 更多