Нельзя подчеркнуть текст в UILabels или UIButtons.Вот что я сделал с похожей ситуацией.
Я хотел подчеркнуть текст в представлении, которое выглядело как ссылка, но я не хотел функциональности UIWebView, и мне нужна была стандартная функциональность UIControl target / action.То, что я сделал, работает, только если у вас есть единственная строка текста, которую вы хотите отобразить, и она выглядит как ссылка.Используйте это как стандартную кнопку UIB.Вы должны создать с помощью type = UIButtonTypeCustom.
Я создал подкласс UIButton, который поддерживает подчеркивание для одной строки текста путем переопределения drawRect
.Я добавил BOOL _titleLabelUnderlined
iVar в подкласс.
XButton.m
- (void)drawRect:(CGRect)rect
{
// just in case...
[super drawRect];
if (_titleLabelUnderlined) {
CGContextRef context = UIGraphicsGetCurrentContext();
// determine the size of the titleLabel text based on the font
CGSize textSize =[self.titleLabel.text sizeWithFont:self.titleLabel.font
forWidth:self.bounds.size.width
lineBreakMode:UILineBreakModeTailTruncation];
// set the underline color
CGContextSetStrokeColorWithColor(context, self.currentTitleColor.CGColor);
// line width
CGContextSetLineWidth(context, 1.0f);
// calc the start and end points for the line
CGFloat minX = self.titleLabel.center.x - textSize.width/2.0f;
CGFloat maxX = self.titleLabel.center.x + textSize.width/2.0f;
// start the line
CGContextMoveToPoint(context, minX, CGRectGetMinY(self.titleLabel.frame) + CGRectGetHeight(self.titleLabel.frame) + 1.0f);
// draw the line to the end point
CGContextAddLineToPoint(context, maxX, CGRectGetMinY(self.titleLabel.frame) + CGRectGetHeight(self.titleLabel.frame) + 1.0f);
// commit the drawing
CGContextStrokePath(context);
}
}