iOS ~ 文本 行间距,字间距,行与字间距,字体居中对齐、居左、居右

  • iOS UILabel设置行间距和字间距

设置文本的:行间距,字间距,行与字间距

Objective-C代码:NSParagraphStyleAttributeName
    CGFloat signUpKnowWidth = 0;
    CGFloat signUpKnowHeight = 0;
    if (noticeContentL.text.length > 0) {
        // 单行文本(宽度)
//        CGSize size = [knowString sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:[UIScreen mainScreen].bounds.size.width/375*13 weight:UIFontWeightMedium]}];
        
        // 多行文本(高度)
        NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
        [style setLineBreakMode:NSLineBreakByCharWrapping];
        style.lineSpacing = 5;
        style.alignment = NSTextAlignmentCenter; // 限制宽度之后,多行文字时,居中对齐
/**
        // //参数:(字体大小17号字乘以2,34f即首行空出两个字符)
        CGFloat emptylen = self.gameType_ContentL.font.pointSize * 2; // 首行空两个空格
        style.headIndent = 0.0f; // 行首缩进
        style.firstLineHeadIndent = emptylen; // 首行缩进
        style.tailIndent = 0.0f; // 行尾缩进
*/

        CGSize size = [noticeContentL.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width/375*310, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:[UIScreen mainScreen].bounds.size.width/375*13 weight:UIFontWeightMedium], NSParagraphStyleAttributeName:style} context:nil].size;
        
        signUpKnowWidth = ceil(size.width); // ceil 如果参数是小数,则求最小的整数但不小于本身
        signUpKnowHeight = ceil(size.height);

/**
//(单行文本)
        CGSize size = [itemString sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:[UIScreen mainScreen].bounds.size.width/375*15 weight:UIFontWeightMedium]}];

        // 当 width > [UIScreen mainScreen].bounds.size.width/375*310 时,代表有换行
        width = ceil(size.width); // ceil 如果参数是小数,则求最小的整数但不小于本身
        height = ceil(size.height);

*/
        
        // 设置行间距:
        NSMutableAttributedString *attriString = [[NSMutableAttributedString alloc] initWithString:noticeContentL.text];
        [attriString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, [noticeContentL.text length])];
        // 设置字间距(同一行的文字内容)
        // [attriString addAttribute:NSKernAttributeName value:@([UIScreen mainScreen].bounds.size.width/375*7) range:NSMakeRange(0, [self.phenology_TitleL.text length])];
        // 设置“字间距”之后,这样会居中显示style.alignment = NSTextAlignmentRight;(这样不居中 NSTextAlignmentCenter;)
        noticeContentL.attributedText = attriString;
    }
image
swift代码:
        let lblTitle = UILabel(frame: CGRect(x: 10, y: 150, width: KScreenWidth-20, height: 100))
        lblTitle.textColor = UIColor.white
        lblTitle.backgroundColor = UIColor.darkGray
        lblTitle.textAlignment = .center
        lblTitle.numberOfLines = 0
        lblTitle.font = UIFont.systemFont(ofSize: 12)
        lblTitle.text = "SDCycleScrollView之前一直在OC中使用觉得很简单又熟悉了所以这次写的Demo依旧搬了过来.SDCycleScrollView之前一直在OC中使用觉得很简单又熟悉了所以这次写的Demo依旧搬了过来."
        self.view.addSubview(lblTitle)

        let attrStr = NSMutableAttributedString(string: lblTitle.text!)
        //设置行间距
        let style:NSMutableParagraphStyle  = NSMutableParagraphStyle()
        style.lineSpacing = 10              //行间距(垂直上的间距)
        style.lineBreakMode = .byCharWrapping       //英文字符拆开显示,byWordWrapping表示不拆开显示
        style.alignment = .center           //居中显示(如果要设置alignment,这个必须设置,因为label的textAlignment会无效)
        style.firstLineHeadIndent = 25.0    //设置首行字符缩进距离
        style.headIndent = 5                //每行的左右间距(字间距)
        attrStr.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: (lblTitle.text?.characters.count)!))
        //设置字间距
        attrStr.addAttribute(NSKernAttributeName, value: 1.5, range: NSRange(location: 0, length: (lblTitle.text?.characters.count)!))
        lblTitle.attributedText = attrStr

第三、UILabel设置行距和字间距:

设置行间距,字间距等都是对字符串的处理,这里需要用到富文本NSAttributedStringNSMutableAttributedString,设置其属性即可。

创建label备用:
NSString *textContent = @"人生若只如初见,何事秋风悲画扇。等闲变却故人心,却道故人心易变。骊山语罢清宵半,泪雨零铃终不怨。何如薄幸锦衣郎,比翼连枝当日愿。";

//label
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, self.view.frame.size.width-20*2, 300)];
//多行显示
testLabel.numberOfLines = 0;
testLabel.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:testLabel];

//富文本属性
NSMutableDictionary *textDict = [NSMutableDictionary dictionary];
//基本属性设置
//字体颜色
textDict[NSForegroundColorAttributeName] = [UIColor blackColor];
//字号大小
textDict[NSFontAttributeName] = [UIFont systemFontOfSize:16.0];

行间距:
设置行间距需要用到NSMutableParagraphStyle,NSMutableParagraphStyle用于设定文本段落有关的设置,比如行间距,文本缩进,段间距等,用法如下:

//段落样式
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
//行间距
paraStyle.lineSpacing = 10.0;
//首行文本缩进
paraStyle.firstLineHeadIndent = 20.0;

//使用
//文本段落样式
textDict[NSParagraphStyleAttributeName] = paraStyle;

字间距:
直接修改NSAttributedString,或者 NSMutableAttributedStringNSKernAttributeName属性即可,用法如下:

    //字间距(字符串)
    textDict[NSKernAttributeName] = @(1);

赋值:

    //赋值
    testLabel.attributedText = [[NSAttributedString alloc] initWithString:textContent attributes:textDict];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容