是否有可能将标签内的文本与“大”框架垂直alignment
在我的应用程序中,我有多个自定义单元格的表格。 单元格中的一些文本分布在2-4行之间,因此标签的高度足够大以包含内容。
然而,在iPad上,屏幕更大,我希望文本出现在标签的左上angular,而不是在使用numberOfLines
属性的时候。 我知道你可以水平alignment文本,但是也可以将文本alignment到左上angular。 或者是不可能的
截图:
不可能将UILabel中的文本垂直alignment。 但是,您可以使用NSString的 sizeWithFont:方法dynamic更改标签的高度,只需按照需要设置它的x和y即可 。
作为替代,你可以使用UITextField 。 它支持contentVerticalAlignment属性,因为它是UIControl的子类。 您必须将其userInteractionEnabled设置为NO,以防止用户在其上键入文本。
我其实注意到了使用
[Blue setSizeToFit]
与顶部垂直alignment。 默认居中。
你可以这样做,如下所示
-
从IB设置标签的
numberOfLines
属性0 -
将标签的
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)]; }
sizeToFit
在UITableCellView
中UITableCellView
,因为单元格在滚动期间被重用。
解决方法是根据字体和字体大小计算表格单元高度,并调整标签高度。
由于在网上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设置为否,所有的问题将得到解决!