默认情况下,UILabel中的文字距离顶段及底部都有一定的距离,但有时想要的效果确实顶端对齐。现总结学习过程中用到的两个方法。
方法一:
[self.myLabel sizeToFit];
这样就可以达到上图所示的效果。但有时label中的文字不只有一行。
self.myLabel.numberOfLines = 0;
[self.myLabel sizeToFit];
使用以上代码就可以达到上图所示效果。self.myLabel.numberOfLines = 0;表示label中的行数不受限制。看起来效果不错,但是,细看会发现label距离左右两边的距离不 一样,初始时是一样的(label的frame为20,20,280,43)。稍作修改
self.myLabel.numberOfLines = 0;
[self.myLabel sizeToFit];
CGRect rect = self.myLabel.frame;
rect.size.width = 280;
self.myLabel.frame = rect;
这样两边的距离就会是一样的。产生不一样的原因是因为sizeToFit这句代码。比如上述一个汉字的宽度是15,那么最多容纳18个汉字,15 x 18 = 270,这与280的宽度相差 10,由于使用了sizeToFit,那么label的宽度就会缩短为270,不再为280。这里还可以设置label的textAlignment为UITextAlignmentCenter或者 UITextAlignmentRight(默认 为UITextAlignmentLeft)得到如下效果。
方法二:
self.myLabel.numberOfLines = 0;
CGSize dataStringSize = [self.myLabel.text sizeWithFont:self.myLabel.font constrainedToSize:CGSizeMake(self.myLabel.frame.size.width,MAXFLOAT) lineBreakMode:self.myLabel.lineBreakMode];
CGRect rect = self.myLabel.frame;
rect.size.height = dataStringSize.height;
self.myLabel.frame = rect;
总结:实习期间曾在这里纠结过,多亏有曦哥指导。现在这两种方法都已掌握。继续,奋斗!