1) Простое решение:
Сделайте ваш UILabel
UITextView и используйте свойство dataDetectorTypes
, чтобы телефонные номера автоматически отображались как ссылки.
2) Более сложное решение:
Существует удобный метод определения размера, который необходимо нарисовать для любого текста:
CGSize size = [label.text sizeWithFont:label.font
constrainedToSize:CGSizeMake(label.frame.size.width, CGFLOAT_MAX)
lineBreakMode:UILineBreakModeWordWrap];
Теперь вы можете определить, какойПоле - это номер телефона, разбив строку на строки:
NSArray *comp = [label.text componentsSeparatedByString:@"\n"];
, а затем проверив, какая из них числовая.Теперь вам нужно будет рассчитать точный кадр из height
вашей size
переменной, может быть так:
CGFloat positionOfNumber; // the index of your line in comp cast to CGFloat
CGFloat buffer = 10; // fiddle with this
CGFloat buttonHeight = (size.height- 2*buffer)/[comp length];
CGFloat buttonY = buffer + positionOfNumber * buttonHeight;
CGRect buttonFrame = CGRectMake(0, buttonY, label.frame.size.width, buttonHeight);