我应该如何以编程方式(以及在哪种方法中)配置UILabel,其高度取决于其文本?我一直在尝试使用Storyboard和代码的组合进行设置,但无济于事.每个人都建议sizeToFit在设置lineBreakMode和numberOfLines.但是,不管我把代码viewDidLoad:,viewDidAppear:或者viewDidLayoutSubviews我不能让它开始工作.要么我的盒子太小而不能长文本也不会长,或者我把它做得太大而且不会缩小.
我在我的nib文件中添加了一个标签,然后需要对该标签进行左上角对齐.因为我在运行时提供文本所以它不确定有多少行.因此,如果文本仅包含单行,则它显示为垂直居中对齐.这种对齐方式与我前面的标签不匹配.
例如:

哪个看起来很奇怪:(
有什么方法可以将标签文本设置为左上角对齐吗?
如何UILabel从底部对齐.比方说,我的标签可以容纳三行文字.如果输入文字是单行,那么这行应该在标签的底部.请参考下面的图片以便更好地理解.橙色区域是标签的完整框架.目前它有一条线,它对齐中心.所以我想要的是,不管有多少行,它都应该始终对齐.
请提出您的想法.
谢谢.
怎么可能我的editable UITextView(放在一个直接的UIViewController里面UISplitView作为委托UITextView)不是从头开始显示文本但是在6-7行之后?

我没有设置任何特定的自动布局或类似的东西,试图删除文本没有帮助(所以没有隐藏的字符或东西).
我在iPad上使用iOS 7,故事板看起来不错...... iOS模拟器和真实设备上的问题是一样的.我生气了:P
这是一些代码.这是ViewControllerviewDidLoad()
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.itemTextField.delegate = self;
self.itemTextField.text = NSLocalizedString(@"NEWITEMPLACEHOLDER", nil);
self.itemTextField.textColor = [UIColor lightGrayColor]; //optional
}
Run Code Online (Sandbox Code Playgroud)
以下是UITextView我使用StackOverflow上的一些代码来重写函数,以模拟视图的占位符(故事板的iPhone版本上的相同内容工作正常)...
// UITextView placeholder
- (void)textViewDidBeginEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:NSLocalizedString(@"NEWITEMPLACEHOLDER", nil)]) {
textView.text = @"";
textView.textColor = [UIColor blackColor]; //optional
}
[textView becomeFirstResponder];
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:@""]) {
textView.text = NSLocalizedString(@"NEWITEMPLACEHOLDER", nil);
textView.textColor …Run Code Online (Sandbox Code Playgroud) 有没有办法"顶部对齐"UILabel,即文本是否粘贴到标签视图的顶部?与垂直居中对齐相反,或者在视图中心浮动,默认情况下是什么?
这是三个标签的图像,左,右和中心对齐,以及对齐中心和顶部的UITextView.无论视图的垂直尺寸如何,textView的文本都会粘到顶部.我可以用标签做同样的事情吗?

在我的应用程序中,我有多个自定义单元格的表视图.单元格中的一些文本分布在2-4行之间,因此标签的高度足以容纳内容.
但是在iPad上屏幕较大,我希望文本显示在标签的左上角,而不是像使用numberOfLines属性时那样出现在中间.我知道你可以水平对齐文本,但是必须可以将文本对齐到左上角吗?或者是不可能的.
截图:

如何在UILabel中顶部对齐不同大小的文本?一个例子是在价格横幅中将较小尺寸的分金额与较大尺寸的金额进行顶部对齐.

iOS6中的UILabel支持NSAttributedString允许我在同一个UILabel中使用不同大小的文本.但是它似乎没有顶部对齐文本的属性.有什么选择来实现这个?在我看来,提供自定义绘图逻辑来基于自定义属性字符串键进行顶部对齐可能是最好的,但我不知道如何去做.
我想垂直对齐我的UITextView中的文本(所以它将在它的中间).我怎样才能实现这一目标?我抬起头,找不到任何可以帮助我的答案.
提前致谢.
因此,我在IB中设置了视图,使得此文本标签通过约束与缩略图的顶部对齐.

但是,正如我们所知,您无法在UILabel中垂直对齐文本.我的文本根据内容的长度更新字体大小.全尺寸文本看起来很棒,而视图上的小文本明显较低.

在现有的解决方案涉及任一呼叫sizeToFit或更新的UILabel的帧匹配的文本的高度.不幸的是,后者(尽管很难看)解决方案不能很好地解决你不应该更新框架的限制.当你需要让文本自动收缩直到它被截断时,前一个解决方案基本上不起作用.(因此它不适用于有限数量的行和自动收缩).
现在,为什么uilabel的内在尺寸(高度)不像宽度那样更新,当它被设置为它的自然尺寸时,通过"尺寸适合内容"超出了我.似乎它肯定应该,但事实并非如此.
所以我一直在寻找其他解决方案.据我所见,您可能需要在标签上设置高度约束,并在计算文本高度后调整高度常量.谁有一个很好的解决方案?
ios ×10
uilabel ×6
iphone ×4
objective-c ×4
autolayout ×3
ios6 ×2
alignment ×1
cocoa-touch ×1
ipad ×1
label ×1
swift ×1
swift3 ×1
textview ×1
uitableview ×1
uitextview ×1
xcode ×1