设置UILabel对齐顶部不在单元格中工作
我有一个问题来实现表格单元格内的文本垂直对齐。设置UILabel对齐顶部不在单元格中工作
我想要做的是基于文本的长度,我想显示一个消息顶部对齐一个单元格内的第一面UILabel。
例如,如果消息是只有一行 文本应顶部对齐:
如果有两行就应该是这样的:
在开始我能看到的是这样的
所以我在网上搜索,什么我发现是 使用
[label1 sizeToFit];
但随着这个问题是表视图细胞有时也不一定特别是所谓的内部,当我切换到从另一个标签视图。
然后我尝试通过代码实时生成标签,但问题是,更不用说设置我想要的字体格式的复杂过程。我必须管理标签是否已插入,然后在每次调用cellForRowAtIndexpath时重新使用它。
更奇怪的是,一旦我选择了行。对齐从第一张图片中看到的那个切换到第三张。当我切换到不同的选项卡视图并切换回视图时,也会发生这种情况。
我想知道是否有人遇到过这样的问题,并且解决了这个问题。
谢谢您提前回复。
编辑:
@βḧäṙℊặṿῗ,你说什么我都试过了。如果只有一行,它将成功对齐标签文本。我的情况是,因为我有多个选项卡视图。一旦我切换标签视图之间来回切换。对齐再次恢复到中心垂直对齐。当我选择该行时也会发生这种情况。任何想法?
试试这个
// label will use the number of lines as per content
[myLabel setNumberOfLines:0]; // VERY IMP
[myLabel sizeToFit];
编辑:
当你有一个最大限度地显示两行,那么你需要设置setNumberOfLines
一个额外条件:2
[myLabel setNumberOfLines:2];
@AashishJoshi是的。另请阅读[numberOfLine](https://developer.apple.com/library/ios/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/numberOfLines)和[sizeToFit] (https://developer.apple.com/library/ios/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/sizeToFit) –
我被测试@βḧäṙℊặṿῗ的回答是完美运行你可以使用这个。 – Maul
是的,我已将其设置为0.但是,在视图之间切换时,标签不一致显示。我只是想知道如何实现iPhone的本地消息应用程序。 – TypingPanda
任你将行号设置为0,如
[yourLabelObject setNumberOfLines:0];
[yourLabelObject sizeToFit];
或
您可以在运行时根据textString长度找到标签的高度。 以下方法将返回文本字符串长度标签的大小(高度&宽度)。 这里的宽度是固定的,只有高度将发生变化:
- (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString andFont:(UIFont *)txtFont
{
CGSize maximumSize = CGSizeMake(width, 9999);
CGSize size = [textString sizeWithFont:txtFont
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
呦需要当u [R做设置文本和标签
的设置帧我希望这将有助于您每次来计算标签的框架。
创建UILabel+Extras
并为此类添加以下方法。
- (void)alignTop{
CGSize fontSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
double finalHeight = fontSize.height * self.numberOfLines;
double finalWidth = self.frame.size.width; //expected width of label
CGRect rect = [self.text boundingRectWithSize:CGSizeMake(finalWidth, finalHeight) options:NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:self.font} context:nil];
CGSize theStringSize = rect.size;
int newLinesToPad = (finalHeight - theStringSize.height)/fontSize.height;
for(int i=0; i< newLinesToPad; i++)
self.text = [self.text stringByAppendingString:@" \n"];
}
调用此方法这样的..
[YOUR_LABEL alignTop];
哦,是的,这是东西! – nmdias
听起来有点傻,但是这是我的方法:对于需要进行顶部对齐我填的文字了多个“任何领域\ N“秒。这会导致文本自动顶部对齐。几乎与Mehul的方法一样。
你设置YOUR_LABLE_OBJ.numberOfLines = 0; ? –