zoukankan      html  css  js  c++  java
  • 类似备忘录的文本 -- 设置行高和每一行的下划线

    #import "EHTextView.h"
    
    @implementation EHTextView
    
    - (instancetype)initWithFrame:(CGRect)frame
                          andText:(NSString *)mText
    {
        self = [super initWithFrame:frame];
    
        if (self)
        {
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    
            // 行间距
            paragraphStyle.lineHeightMultiple = 40;
            paragraphStyle.maximumLineHeight = 40;
            paragraphStyle.minimumLineHeight = 40;
            self.textContainerInset = UIEdgeInsetsMake(-10, 0, 0, 0);
            NSString *oneRowStr = [mText substringWithRange:NSMakeRange(0, [mText rangeOfString:@"
    "].location)];
            NSMutableAttributedString *prefixAttr = [[NSMutableAttributedString alloc] initWithString:mText];
            [prefixAttr addAttribute:NSFontAttributeName value:FZHei(17) range:NSMakeRange(0, mText.length)];
            [prefixAttr addAttribute:NSForegroundColorAttributeName value:ColorHui range:NSMakeRange(0, mText.length)];
            [prefixAttr addAttribute:NSFontAttributeName value:FZHei(17) range:NSMakeRange(0, oneRowStr.length)];
            [prefixAttr addAttribute:NSForegroundColorAttributeName value:ColorHuiHei range:NSMakeRange(0, oneRowStr.length)];
            [prefixAttr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, mText.length)];
            self.attributedText = prefixAttr;
    
            self.backgroundColor = [UIColor clearColor];
            self.userInteractionEnabled = NO;
        }
    
        return self;
    }
    
     
    - (void)drawRect:(CGRect)rect {
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetStrokeColorWithColor(context, HexRGB(0xd2d2d2).CGColor);
        CGContextSetLineWidth(context, 0.5f);
        CGContextBeginPath(context);
        CGFloat rowH = 40;
        NSUInteger numberOfLines =  (self.bounds.size.height - 15) / rowH;
        CGFloat baselineOffset = 0;
        for (int x = 1; x < numberOfLines + 1; x++) {
            CGContextSetStrokeColorWithColor(context, [UIColor lightGrayColor].CGColor);
            CGFloat lengthstest[] = {5,2};
            CGContextSetLineDash(context, 2, lengthstest,1);
            CGContextMoveToPoint(context, 2, rowH * x  + baselineOffset);
            CGFloat rowW = numberOfLines == x ? 35 : 0;
            CGContextAddLineToPoint(context, CGRectGetWidth(rect) - rowW, rowH * x + baselineOffset);
            CGContextStrokePath(context);
        }
    
        CGContextStrokePath(context);
    }
    @end
  • 相关阅读:
    程序员用HTML5给女朋友制作的3D相册
    CSS图片翻转动画技术详解
    jQuery实现的全选、反选和不选功能
    行内元素和块级元素
    &nbsp|&quot|&amp|&lt|&gt等html字符转义
    找回Git中丢失的Commit
    GIT的使用中的问题处理
    Linux下的常用指令汇总
    Pandas存储为Excel格式:单个xlsx文件下多sheet存储方法
    Python全栈开发-执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)
  • 原文地址:https://www.cnblogs.com/Milo-CTO/p/4633122.html
Copyright © 2011-2022 走看看