我在我的应用中使用了UILabel。它在纵向模式下正常工作。但是当我以横向模式打开我的应用程序时,它会在UIlabel的中心显示内容。我尝试过sizeToFit,但它不起作用。一旦我增加uilabel的宽度间距开始到达uilabel。
我的代码:
self.contentLabel.text = labeltext;
[self.contentLabel setNumberOfLines:0];
[self.contentLabel sizeToFit];
答案 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,如果发生这种情况并且无法更改此对齐(垂直中心)则是正常的。
我有两个解决这个问题的方法:
使用约束:
此约束大于或等于只是魔术。
如果您使用我建议使用的代码创建标签:
UIFont *fontReceive = [UIFont systemFontOfSize:[UIFont systemFontSize]];
CGSize sizeText = [text sizeWithFont:fontReceive constrainedToSize:CGSizeMake(260, 9999) lineBreakMode:NSLineBreakByWordWrapping];
希望这会有所帮助!