顶部对齐的UILabel,使文本粘贴到标签视图顶部-ios

Mrw*_*lfy 26 iphone xcode objective-c ios

有没有办法"顶部对齐"UILabel,即文本是否粘贴到标签视图的顶部?与垂直居中对齐相反,或者在视图中心浮动,默认情况下是什么?

这是三个标签的图像,左,右和中心对齐,以及对齐中心和顶部的UITextView.无论视图的垂直尺寸如何,textView的文本都会粘到顶部.我可以用标签做同样的事情吗?

在此输入图像描述

Abo*_*ein 32

有一个解决方法:

  1. 使用常量<= 设置高度和宽度constraint到您UILabel想要的最大高度|宽度.
  2. 设为number of lines零.
  3. 将高度设置为storyboard仅适合一行.
  4. 在设置UILabel调用文本后的代码中sizeToFit.

这将使您UILabel在所需的最大宽度和高度的范围内调整大小,文本将始终顶部对齐.


Mrw*_*lfy 12

我在上面的问题评论中使用了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];

}
Run Code Online (Sandbox Code Playgroud)

这是项目:

owolf.net/uploads/StackOverflow/verticalAlignUILabel.zip


小智 9

UILabel默认情况下,无法在iOS中设置a的垂直对齐方式.相反,您将需要使用其中一种sizeWithFont方法NSString.您使用哪一个取决于您是否需要多行或单行标签.sizeWithFont:forWidth:lineBreakMode:可用于单行标签,同时sizeWithFont:constrainedToSize:lineBreakMode:可用于多行标签.您可以使用font相关标签的属性轻松加载font参数.您可以在此处查看有关使用这些功能的更多详细信息.

这些方法将CGSize根据文本中的文本返回标签最小尺寸的结构NSString.一旦您拥有正确的标签尺寸,您就可以轻松地将其放置在超级视图的顶部,并且它看起来是顶部对齐的.

  • 您还可以在标签上调用sizeToFit以将帧设置为其内容. (2认同)

Web*_*ode 7

我用UITextView替换了UILabel,因为在UITextView中,文本贴在顶部.

只是一个建议,它可能对某人有用.