小编drk*_*itz的帖子

iOS UILabel 并避免使用自定义字体剪切变音符号

首先,StackOverflow 上有很多问题,但没有一个能完全回答这个问题。

问题主要是(但很可能不限于)泰语和阿拉伯语变音符号,当使用 UILabel 的 text 属性使用自定义的纯拉丁字体呈现时。这也是自动布局中固有的大小。我已经完成了 Apple 建议的所有操作,使用了他们文档中提到的设置、WWDC 视频以及有关 StackOverflow 的问题(例如 clipsToBounds = NO 等)。请记住,在我的场景中只有我的自定义字体设置剪辑,而不是 iOS 系统字体 (.SF-UIDisplay),甚至 iOS 系统也没有提供 Helvetica 或 Helvetic Neue。自定义字体已经检查和重新检查,此时得出的结论是,iOS 是所有平台的异常,即使是 macOS。更清楚的是,可以在 SF Pro 中看到与自定义字体相同的剪切行为,这是 Apple 自己在此处提供的字体:https://developer.apple.com/fonts/

这个问题是关于不剪掉变音符号的最适当、最少侵入性和最完整的方法。意思是,理想情况下,您将如何从头开始执行此操作。

我所有的字体研究和测试运行都让所有参与这个问题的人相信 Apple 已经在 UILabel 中专门针对他们的系统字体实施了特殊处理,以避免变音符号剪裁。所以做出这个假设,我也假设字体没问题,我正在寻找不涉及编辑字体的解决方案。

在我尝试使用该字体时,首先出错的是泰国字形的上升变音符号的垂直剪裁:

????????Hello
Run Code Online (Sandbox Code Playgroud)

这意味着当它们从自定义的纯拉丁字体级联时,Thonburi 字体的字形。从这一点开始的修复是仅对泰语使用自定义字体,没有任何拉丁字符,因此可以将其定义为主要字体,并级联到前面提到的仅限拉丁语的自定义字体。毕竟,自定义泰语字体在文本末尾的变音符号上仍然存在水平剪切问题:

World???
Run Code Online (Sandbox Code Playgroud)

所以现在我对字体管理木偶可以做的任何进一步的事情感到茫然(尽管仍然接受建议),我正在转向更多以代码为中心的修复。我已经看到很多问题和答案都提到了 UILabel 的子类化,但我想知道这会是什么样子来完成我所描述的。

我还想知道是否只是选择退出 UILabel 对任何人来说都是一种选择。这意味着使用 TextKit 从头开始​​编写一些东西是值得的,以避免所有这些似乎只困扰 iOS 的错误,特别是 UILabel。

fonts clipping diacritics uilabel ios

5
推荐指数
1
解决办法
1026
查看次数

在常见情况下何时使用Core Animation而不是UIView动画是合适的

这与许多小错误有关,这些小错误可能被一个人刻板地认为是次要的,但主要是另一个人.

我越来越注意到的是,当使用所有的味道时UIView animateWithDuration:,它实际上不必要地修改了一些东西,例如我的视图的多个属性,做一个简单的隐藏/显示样式动画等等.

在诸如UINavigationBar没有为某个旋转过渡正确设置位置动画的情况下,或者在帧更新时没有动态显示状态栏的标题视图,当视图的子图层在其父视图的情况下会隐式动画时,事情似乎很挑剔物业变化......

其中很多我一直在重新审视,并转换为CAAnimations,因为它们似乎更容易管理,因为它们实际上并没有修改我的视图的目标属性值.

一个简单的例子是,使用[view setHidden:],然后动画或视图外,但在动画运行时,视图实际上已经可见或隐藏.

另一个是,需要转换/旋转/缩放UINavigationController的视图,并使用CAAnimation来执行它,因为如果我修改UINavigationController的视图及其任何父视图的转换属性值,UINavigationBar不会移动到它的正确位置.

所以在这个问题的结论中,我一直在来回,并且在我的情况下找到了比另一个更合适的地方,但主要是,我想听听别人对这些情景的看法,如果有的话深入了解Apple提供的内容,让我对自己的方法感觉更好.

提前致谢.

animation core-animation uiviewanimation ios ios-animations

4
推荐指数
1
解决办法
1977
查看次数