计算动态UILabel(iOS7)的行数

Jac*_*ień 8 uilabel ios ios7

这个问题有很多解决方案,但找不到不推荐的解决方案.

我有一个UILabel模式WordWrap和固定宽度,比方说250.行设置为0.

这是我尝试过的:

UILabel *contentLabel = (UILabel*)[contentView viewWithTag:10];
CGSize size = [contentLabel.text sizeWithFont:contentLabel.font forWidth:contentLabel.frame.size.width lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"Label's height is: %d", size.height);
Run Code Online (Sandbox Code Playgroud)

高度参数的输出总是20(所以它就像一行),而te文本就像30行一样.

我需要它用于UIScrollView目的.

Num*_*ral 55

使用文档方法中的建议:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);
Run Code Online (Sandbox Code Playgroud)

例如

    CGSize maxSize = CGSizeMake(self.label.frame.size.width, MAXFLOAT);

    CGRect labelRect = [self.label.text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.label.font} context:nil];

    NSLog(@"size %@", NSStringFromCGSize(labelRect.size));
Run Code Online (Sandbox Code Playgroud)

  • 但是这个只返回一行的高度.它如何适用于多行? (4认同)
  • 不要忘记将宽度和高度细化; 小区(labelRect.size.width); (3认同)
  • 这是在iOS7中执行此操作的正确方法.好答案. (2认同)