如何防止文本被截断,就像在UITextView中一样?
我有一个UILabel和UITextView都带有相同的文本(字符串“SnellRoundhand”,Snell Roundhand粗体字体,点大小为21)。 UITextView中的文本显示正确,但UILabel的文本已在左侧和右侧切断。 如何让标签中的文字正确显示?
一些说明:
在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)];
}
我没有一个很好的答案,但我可以建议一个混乱的做你想做的事情,并可能会给你一些有用的想法。 这个问题似乎暗示了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属性没有帮助。 看起来像苹果在这里的问题。
在iOS 6上,UITextView在每边都有一个边距,您可以调整内嵌插值以防止文本使用这些边距。
[textView setContentInset:UIEdgeInsetsMake(-8,-8,-8,-8)];
链接地址: http://www.djcxy.com/p/28239.html上一篇: How do I prevent text from being cut off like in UITextView?