UIlabel在文本之前显示额外的空间

时间:2014-02-18 07:34:42

标签: ios device-orientation

我在我的应用中使用了UILabel。它在纵向模式下正常工作。但是当我以横向模式打开我的应用程序时,它会在UIlabel的中心显示内容。我尝试过sizeToFit,但它不起作用。一旦我增加uilabel的宽度间距开始到达uilabel。

我的代码:

self.contentLabel.text = labeltext;
[self.contentLabel setNumberOfLines:0];
[self.contentLabel sizeToFit];

3 个答案:

答案 0 :(得分:2)

我怀疑你的UILabel本身而不是其中的文本实际上在旋转时不正确地对齐。确保标签与视图顶部保持对齐。尝试:

self.contentLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight;

self.contentLabel.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

编辑:另一个想法。

如果启用了自动布局并且您在sizeToFit中调用了viewDidLoad,则可能会在自动布局布局子视图后调整视图大小。请尝试将代码放在viewDidLayoutSubviews中。

答案 1 :(得分:0)

最佳解决方案是根据填充单元格的文本数量更改单元格的高度。

请参阅下面的代码作为示例。

NSString *content = **YOUR_STRING_LABEL_INTENDED_CONTENT**
CGSize maximumLabelSize = CGSizeMake(390, 1000); //For example - Put in your desired label width here and maximum size etc.

NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:13] forKey: NSFontAttributeName]; //This allows a calculation to be made of the space taken up, so if you're using a custom or large font it will calculate accordingly.

CGSize newExpectedLabelSize = [content boundingRectWithSize:maximumLabelSize options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin attributes:stringAttributes context:nil].size;

现在,您可以使用下一行更改标签的高度,其中label是您所做标签的名称。

GCRect frame = label.frame;
frame.size.height = newExpectedLabelSize.height;
label.frame = frame;

我希望这有助于,欢呼,吉姆。

答案 2 :(得分:0)

如果添加高度大于文本高度的UILabel,如果发生这种情况并且无法更改此对齐(垂直中心)则是正常的。

enter image description here

我有两个解决这个问题的方法:

使用约束:

enter image description here

此约束大于或等于只是魔术。

如果您使用我建议使用的代码创建标签:

UIFont *fontReceive = [UIFont systemFontOfSize:[UIFont systemFontSize]];
CGSize sizeText = [text sizeWithFont:fontReceive constrainedToSize:CGSizeMake(260, 9999) lineBreakMode:NSLineBreakByWordWrapping];

希望这会有所帮助!