是否有可能将标签内的文本与“大”框架垂直alignment

在我的应用程序中,我有多个自定义单元格的表格。 单元格中的一些文本分布在2-4行之间,因此标签的高度足够大以包含内容。

然而,在iPad上,屏幕更大,我希望文本出现在标签的左上angular,而不是在使用numberOfLines属性的时候。 我知道你可以水平alignment文本,但是也可以将文本alignment到左上angular。 或者是不可能的

截图:

在这里输入图像说明

不可能UILabel中的文本垂直alignment。 但是,您可以使用NSString的 sizeWithFont:方法dynamic更改标签的高度,只需按照需要设置它的xy即可

作为替代,你可以使用UITextField 。 它支持contentVerticalAlignment属性,因为它是UIControl的子类。 您必须将其userInteractionEnabled设置为NO,以防止用户在其上键入文本。

我其实注意到了使用

 [Blue setSizeToFit] 

与顶部垂直alignment。 默认居中。

你可以这样做,如下所示

  1. 从IB设置标签的numberOfLines属性0

  2. 将标签的lineBreakMode设置为UILineBreakModeWordWrap非常重要

现在无论你在标签上设置什么,只需附加几个@“\ n”….. ex.-

 [yourTextLabel setText:@"myLabel\n\n\n\n\n"]; 

在iOS 7中sizeWithFont:现已被弃用! 像UILabel子类一些解决scheme必须适应。

我的解决scheme顶部alignment的标签文本:在子类TopVerticalAlignmentLabel : UILabel覆盖drawRect:如下所示:

 - (void)drawRect:(CGRect)rect { CGRect labelStringRect = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, CGFLOAT_MAX) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@{ NSFontAttributeName: self.font, /* further attributes */} context:nil]; [super drawTextInRect:CGRectMake(0, 0, self.frame.size.width, labelStringRect.size.height)]; } 

sizeToFitUITableCellViewUITableCellView ,因为单元格在滚动期间被重用。

解决方法是根据字体和字体大小计算表格单元高度,并调整标签高度。

由于在网上find解决scheme相当困难,我写了一篇短文

我join了viewDidLoad

 self.textLabel.numberOfLines = 0; [self.textLabel sizeToFit]; 

确保您的约束设置正确,以便允许标签缩小或增长。 否则,它将无法正常工作。

这是SomeOne问的同样的问题。 你会find更合适的方法来解决这个问题。他们做了很好的解释。

我想是的,你应该看看这个。

在这个线程中,许多答案build议在text的基础上为UILabel设置dynamic框架,如下面所描述的代码片段。

  CGSize theStringSize = [textToBeUsed sizeWithFont:lblTitle.font constrainedToSize:labelSize lineBreakMode:lblTitle.lineBreakMode]; lblTitle.frame = CGRectMake(lblTitle.frame.origin.x, lblTitle.frame.origin.y, theStringSize.width, theStringSize.height); lblTitle.text = theText; // lblTitle is the Label used for showing the Text. 

你可以得到更精确的想法,而不是在这里使用textField

你可以简单地使用一个UITextView,并将其UserInteraction设置为否,所有的问题将得到解决!