我有一个 UIView,我需要在 drawRect 中绘制文本:
- (void)drawRect:(CGRect)rect {
...
[@"some text" drawAtPoint:somePoint withFont:someFont];
...
}
因为文本需要特殊格式,所以我不能只使用 UILabel。
在我旋转设备之前,它看起来很好。然后,我的自定义 UIView 的大小发生变化(在父 View 的 layoutSubviews
方法中),文本在一个方向上被拉伸(stretch),在另一个方向上被压扁。
当我用 UILabel 替换 View 时,文本看起来总是很棒,即使 View 的边界发生变化也是如此。
如何让我的 View 表现出与 UILabel 相同的行为?
我研究过一些事情,但尚未取得成功:
- 将 View 层的needsDisplayOnBoundsChange 设置为YES。
- 将 View 的 contentStretch 设置为 CGRectZero。
- 在我的 View 的layoutSubviews中调用setNeedsDisplay。
也许我没有做对其中一件事情。还有其他人遇到过这种情况吗?
更新:按照 James Huddleston 的回答中的建议,我将 View 的 contentMode
属性设置为 UIViewContentModeRedraw
,这让我成为了就在那里。现在,动画结束时的文本显示正确。但是,在动画开始时,文本会被压扁/拉伸(stretch)以适合最终尺寸,然后在动画过程中不再压扁/拉伸(stretch)。 UILabel 的情况并非如此。
最佳答案
尝试将 View 的 contentMode
属性设置为 UIViewContentModeRedraw
。
关于iphone - 如何获得一个 UIView,它在边界更改时显示文本,使其表现得像 UILabel 一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949711/