顶部对齐的UILabel,使文本粘在标签视图的顶部
有没有办法“顶部对齐”一个UILabel,就是让文本粘贴到标签视图的顶部? 与中心垂直对齐,还是浮动在视图的中心,与默认值一样?
这里是三个标签的图像,左对齐,右对齐和中心,以及UITextView中心和顶部对齐。 无论视图的垂直大小如何,textView的文本都会粘贴到顶部。 我可以用标签做同样的事吗?
iOS中默认无法设置UILabel
的垂直对齐方式。 相反,你会想使用NSString
提供的sizeWithFont
方法之一。 您使用哪一个取决于您是想要多行还是单行标签。 sizeWithFont:forWidth:lineBreakMode:
可用于单行标签,而sizeWithFont:constrainedToSize:lineBreakMode:
可用于多行标签。 您可以轻松地将字体参数加载到相关标签的font
属性中。 你可以在这里看看使用这些函数的更多细节。
这些方法将基于NSString
的文本返回一个CGSize
结构,其大小为最小尺寸。 一旦标签尺寸正确,您可以轻松将其放置在您的超级视图顶部,并且它看起来是顶部对齐的。
有一个解决方法:
UILabel
的高度和宽度constraint
。 number of lines
设置为零。 storyboard
的高度设置为仅适合一条线。 UILabel
调用sizeToFit
的文本后,在你的代码中。 这会让你的UILabel
在你想要的最大宽度和高度的范围内调整大小,并且文本将始终保持顶部对齐。
我使用了nevan king在上面链接的问题,在我的问题的评论中:在UILabel中垂直对齐文本
我使用的代码在这里:
- (void)setUILabelTextWithVerticalAlignTop:(NSString *)theText {
CGSize labelSize = CGSizeMake(250, 300);
CGSize theStringSize = [theText sizeWithFont:targetLabel.font constrainedToSize:labelSize lineBreakMode:targetLabel.lineBreakMode];
targetLabel.frame = CGRectMake(targetLabel.frame.origin.x, targetLabel.frame.origin.y, theStringSize.width, theStringSize.height);
targetLabel.text = theText;
}
//linked to a button that sets the text from a UITextView to the label.
- (IBAction)setText:(id)sender {
[sourceText resignFirstResponder];
[self setUILabelTextWithVerticalAlignTop:sourceText.text];
[targetLabel setNumberOfLines:0];
[targetLabel sizeToFit];
}
这是该项目:
owolf.net/uploads/StackOverflow/verticalAlignUILabel.zip
链接地址: http://www.djcxy.com/p/4841.html上一篇: Top aligned UILabel, make text stick to top of label view