【发布时间】:2015-08-25 21:32:38
【问题描述】:
对于我实际想要实现的目标,存在很多困惑。所以请让我改写我的问题。很简单:
Apple 如何在
UILabel的-drawTextInRect:中居中文本?
以下是关于我为什么要寻找 Apple 的文本居中方法的一些背景信息:
- 我不满意他们如何在此方法中居中文本
- 我有自己的算法,可以按照我想要的方式完成工作
但是,有些地方我无法将这个算法注入其中,即使是方法调配也不行。了解他们使用的确切算法(或等效算法)将解决我的个人问题。
这是您可以尝试的demo project。如果您对我对 Apple 实现的问题感兴趣,请查看左侧(基本 UILabel):当您使用滑块增加字体大小时,文本会上下跳跃,而不是逐渐向下移动。
同样,我所寻找的只是-drawTextInRect: 的实现,它与基本UILabel 完全相同——但不调用super。
- (void)drawTextInRect:(CGRect)rect
{
CGRect const centeredRect = ...;
[self.attributedText drawInRect:centeredRect];
}
【问题讨论】:
-
对不起,我没抓住重点!刚刚删除了我的帖子
-
您的意思是要更改文本边界吗?或者你真的想实现-drawTextInRect?似乎是 2 个不同的问题。
-
你能举一个在 UILabel 中没有垂直居中的文本的例子吗?我假设您正在考虑后代?
-
@ChristianSchnorr 这有点重,但您可以调整
UILabels 默认drawTextInRect:并为所有UILabels 添加一个自己的属性,该属性定义是使用您自己的实现还是默认实现.这样您就可以在任何UILabel实例中使用自己的绘图,例如通过使用label.useCustomDrawing = YES;。 -- 你也可以创建一个UILabel的简单子类(它不能有任何存储属性),然后在运行时替换你想要修改的标签的类(并且不能自己实例化):object_setClass(evilLabel, MyCoolLabel.class);跨度> -
@ChristianSchnorr 如果您认为这个问题已经得到了充分的解释,那么让它运行并享受您得到的答案。现在,除其他外,我正在查看一个问题:“很长一段时间以来,我一直对各种 Apple 视图中的文本没有正确垂直居中这一事实感到恼火。”还有一条评论说“你对我的帖子所做的编辑只会让人们更加困惑,因为这意味着我关心图像的居中,这又是我不关心。”我建议你真的没有你想象的那么清楚。
标签: ios objective-c iphone uilabel typography