我有一个UILabel和UITextView都有相同的文本(字符串“SnellRoundhand”,Snell Roundhand Bold字体,点大小21)。 UITextView中的文本正确显示,但UILabel的文本在左侧和右侧被切断。如何让标签中的文字正确显示?
一些注意事项:
答案 0 :(得分:3)
在iOS 6中,UILabel的一个非常好的新功能是它支持属性字符串。归属字符串可以包含段落边距。因此,您可以为字符串添加边距,从而确保标签边缘和字符串绘图之间有一些额外的空间。
本书的这一部分有示例代码,可以为UILabel中绘制的字符串添加边距:
http://www.apeth.com/iOSBook/ch23.html#_attributed_strings
如果你想在早于iOS 6的系统上运行,你可以继承UILabel来强制从标签的边缘插入文本,如下面的代码所示(也来自我的书):
- (void)drawTextInRect:(CGRect)rect {
[super drawTextInRect:CGRectInset(rect, 5.0, 5.0)];
}
答案 1 :(得分:0)
我没有一个好的答案,但我可以建议一个kludge,sorta做你想做的事情,可能会给你一些有用的想法。肯定的问题似乎表明Label和TextView处理时髦字体的根本问题。
这个概念很简单:
这将导致字段宽度足以显示文本而不剪裁(如果放大正确的数量)。我知道你说你无法改变文本对齐方式,但这样做只会将文本移动一两点,最终会显示完整文本所需的位置。该字段最终大小,文本位于应该的位置。例如:
self.textField.textAlignment = NSTextAlignmentLeft;
[self.textField sizeToFit];
CGRect frame = self.textField.frame;
frame.size.width += 4;
self.textField.frame = frame;
self.textField.textAlignment = NSTextAlignmentCenter;
此有效。如果它直接对你没用,我希望它会给你一些想法。
我试过的一些没用的东西是继承UITextField并覆盖 textRectForBounds:来扩大用于绘制文本的区域。我可以将文本起始位置稍微向右移动,但它仍然会剪切左边缘。关闭 clipsSubviews 属性没有帮助。这看起来像Apple的问题。
答案 2 :(得分:0)
在iOS 6上,UITextView的每一面都有一个边距,您可以调整内容插入以防止文本使用这些边距。
[textView setContentInset:UIEdgeInsetsMake(-8,-8,-8,-8)];