2011-06-28 35 views

回答

1

你需要实现你的UIView继承类的drawRect:方法。

- (void)drawRect:(CGRect)rect 
    { 
      // Get the Render Context 
     CGContextRef ctx = UIGraphicsGetCurrentContext(); 

     // Measure the font size, so the line fits the text. 
     // Could be that "titleLabel" is something else in other classes like UILable, dont know. 
     // So make sure you fix it here if you are enhancing UILabel or something else.. 
     CGSize fontSize =[self.titleLabel.text sizeWithFont:self.titleLabel.font 
                forWidth:self.bounds.size.width 
               lineBreakMode:UILineBreakModeTailTruncation]; 
     // Get the fonts color. 
     const float * colors = CGColorGetComponents(self.titleLabel.textColor.CGColor); 
     // Sets the color to draw the line 
     CGContextSetRGBStrokeColor(ctx, colors[0], colors[1], colors[2], 1.0f); // Format : RGBA 

     // Line Width : make thinner or bigger if you want 
     CGContextSetLineWidth(ctx, 1.0f); 

     // Calculate the starting point (left) and target (right) 
     float fontLeft = self.titleLabel.center.x - fontSize.width/2.0; 
     float fontRight = self.titleLabel.center.x + fontSize.width/2.0; 

     // Add Move Command to point the draw cursor to the starting point 
     CGContextMoveToPoint(ctx, fontLeft, self.bounds.size.height - 1); 

     // Add Command to draw a Line 
     CGContextAddLineToPoint(ctx, fontRight, self.bounds.size.height - 1); 

     // Actually draw the line. 
     CGContextStrokePath(ctx); 

     // should be nothing, but who knows... 
     [super drawRect:rect]; 
    } 

采取形式iPhone Programming how to underline UILabel

你也可以继承UILabel。看到belwo SO帖子,其确实完全相同。

Underline text in UIlabel

2

可以inheritate的UILabel和自己划清界限在drawTextInRec