zoukankan      html  css  js  c++  java
  • label_设置行距、字距及计算含有行间距的label高度

    //

    //  ViewController.m

    //  CNBlogs

    //

    //  Created by PXJ on 16/5/27.

    //  Copyright © 2016 PXJ. All rights reserved.

    //

     

    #import "ViewController.h"

     

    @interface ViewController ()

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        NSString * conText = @" 你的嘴角 微微上翘 性感的无可救药 想像不到 如此心跳 你的一切都想要 软性的饮料 上升的气泡 我将对你的喜好 一瓶装全喝掉 这里最不缺就是热闹 你煽情给拥抱 烛火在燃烧 有某种情调 眼神失焦了几秒 关于你的舞蹈 你慵懒的扭动著腰 受不了 你随风飘扬的笑 有迷迭香的味道 语带薄荷味的撒娇 对我发出恋爱的讯号 你优雅的像一只猫 动作轻逸的围绕 爱的甜味蔓延发酵 暧昧来的刚好 软性的饮料 上升的气泡 我将对你的喜好 一瓶装全喝掉 这里最不缺就是热闹 你煽情给拥抱 烛火在燃烧 有某种情调 眼神失焦了几秒 关于你的舞蹈 你慵懒的扭动著腰 受不了 你随风飘扬的笑 有迷迭香的味道 语带薄荷味的撒娇 对我发出恋爱的讯号 你优雅的像一只猫 动作轻逸的围绕 爱的甜味蔓延发酵 暧昧来的刚好 ";

        UIFont * font = [UIFont systemFontOfSize:12]; //字号

        CGFloat lineSpace = 8;//行间距

        CGFloat paragraphSpacing = 0;//段间距

        CGSize labSize = CGSizeMake(400, 1000);//label宽高

        NSNumber * textLengthSpace  = @0.2;//字间距

        

        

        NSDictionary * dic  = [self setTextLineSpaceWithString:conText withFont:font withLineSpace:lineSpace  withTextlengthSpace:textLengthSpace paragraphSpacing:paragraphSpacing];

        

        CGSize size = [conText boundingRectWithSize:labSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

        CGFloat sizeHeight = size.height;//lab的高度

     

        

    //   CGFloat sizeHeight =  [self getSpaceLabelHeight:conText withFont:font withLineSpace:lineSpace size:labSize textlengthSpace:textLengthSpace paragraphSpacing:paragraphSpacing];

    //    

        UILabel  * lab = [[UILabel alloc] init];

        lab.numberOfLines = 0;

        lab.backgroundColor = [UIColor yellowColor];

        lab.frameCGRectMake(20,20, 400, sizeHeight);

        lab.attributedText = [[NSAttributedString alloc] initWithString:conText attributes:dic];

        [self.view addSubview:lab];

    }

     

    /*

     *UILabel设置行间距和字间距

     */

    -(NSDictionary *)setTextLineSpaceWithString:(NSString*)str withFont:(UIFont*)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace paragraphSpacing:(CGFloat)paragraphSpacing{

        

        NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];

        paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

        paraStyle.alignment = NSTextAlignmentLeft;

        paraStyle.lineSpacing = lineSpace; //设置行间距

        paraStyle.hyphenationFactor = 1.0;

        paraStyle.firstLineHeadIndent = 0.0;

        paraStyle.paragraphSpacingBefore = 0.0;

        paraStyle.headIndent = 0;

        paraStyle.tailIndent = 0;

        NSDictionary *dic = @{NSFontAttributeName:font,

                              NSParagraphStyleAttributeName:paraStyle,

                              NSKernAttributeName:textlengthSpace

                              };

        return dic;

    }

     

    /*

     *计算UILabel的高度(带有行间距的情况)

     */

     

     

    //-(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withLineSpace:(CGFloat)lineSpace size:(CGSize)textSize textlengthSpace:(NSNumber *)textlengthSpace paragraphSpacing:(CGFloat)paragraphSpacing

    //{

    //    

    //    

    //    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];

    //    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

    //    paraStyle.alignment = NSTextAlignmentLeft;

    //    paraStyle.lineSpacing = lineSpace;

    //    paraStyle.paragraphSpacing = paragraphSpacing;

    //    paraStyle.hyphenationFactor = 1.0;

    //    paraStyle.firstLineHeadIndent = 0.0;

    //    paraStyle.paragraphSpacingBefore = 0.0;

    //    paraStyle.headIndent = 0;

    //    paraStyle.tailIndent = 0;

    //    NSDictionary *dic = @{NSFontAttributeName:font,

    //                          NSParagraphStyleAttributeName:paraStyle,

    //                          NSKernAttributeName:textlengthSpace

    //                          };

    //    CGSize size = [str boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

    //    return size.height;

    //}

    //

    @end

     

    效果图

  • 相关阅读:
    第五周反向传播算法
    PHP数组排序
    <meta-data>
    Android之Intent
    Fragment生命周期
    前端后台学习笔记汇杂
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    用java将excel中数据导入mysql
    幸运观众抽奖
    JTextField
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6424447.html
Copyright © 2011-2022 走看看