Just call below and pass in either UILabel or UITextView :
-(NSInteger)getNumberOfLinesInLabelOrTextView:(id)obj { NSInteger lineCount = 0; if([obj isKindOfClass:[UILabel class]]) { UILabel *label = (UILabel *)obj;
Now call this method: -
NSLog(@"%d",[self getNumberOfLinesInLabelOrTextView:label]); NSLog(@"%d",[self getNumberOfLinesInLabelOrTextView:textView]);
UPDATED: SWIFT CODE
func getNumberOfLinesInLabelOrTextView(obj:AnyObject) -> NSInteger { var lineCount: NSInteger = 0 if (obj.isKindOfClass(UILabel)) { let label: UILabel = obj as! UILabel let requiredSize: CGSize = (label.text)!.boundingRectWithSize(CGSizeMake(CGRectGetWidth(label.frame), CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: label.font], context: nil).size let charSize: CGFloat = label.font.leading let rHeight: CGFloat = requiredSize.height lineCount = (NSInteger)(rHeight/charSize) } else if (obj.isKindOfClass(UITextView)){ let textView: UITextView = obj as! UITextView lineCount = (NSInteger)(textView.contentSize.height / textView.font.leading) } return lineCount }
Now call this method: -
println("%d \(self.getNumberOfLinesInLabelOrTextView(textView))") println("%d \(self.getNumberOfLinesInLabelOrTextView(label))")
Note: leading - use lineHeight. does not return the actual manual. will be formally obsolete in the future.
TheTiger Jan 18 '13 at 14:43 2013-01-18 14:43
source share