zoukankan      html  css  js  c++  java
  • UIButton 上的标题添加下划线效果

    subclass UIButton类 重载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];   
        }
  • 相关阅读:
    iperf/iperf3网络测试工具的安装与使用
    驱动模块(4)——模块编译
    760. Find Anagram Mappings
    MySQL面试题
    MySQL 的数据存储引擎
    203. Remove Linked List Elements
    数据库事务隔离级别
    232. Implement Queue using Stacks
    MySQL中的事务
    482. License Key Formatting
  • 原文地址:https://www.cnblogs.com/kelisi-king/p/3290271.html
Copyright © 2011-2022 走看看