顶部对齐的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

    下一篇: left alignment for UILabel for iOS application?