CoreText(二):段落CTParagraphStyle

原创 2016年08月31日 17:52:29

一、定义

1、段落样式定义

CTParagraphStyleSpecifier

typedef CF_ENUM(uint32_t, CTParagraphStyleSpecifier) {
     kCTParagraphStyleSpecifierAlignment = 0,                 //对齐属性  
     kCTParagraphStyleSpecifierFirstLineHeadIndent = 1,       //首行缩进  
     kCTParagraphStyleSpecifierHeadIndent = 2,                //段头缩进  
     kCTParagraphStyleSpecifierTailIndent = 3,                //段尾缩进  
     kCTParagraphStyleSpecifierTabStops = 4,                  //制表符模式  
     kCTParagraphStyleSpecifierDefaultTabInterval = 5,        //默认tab间隔  
     kCTParagraphStyleSpecifierLineBreakMode = 6,             //换行模式  
     kCTParagraphStyleSpecifierLineHeightMultiple = 7,        //多行高  
     kCTParagraphStyleSpecifierMaximumLineHeight = 8,         //最大行高  
     kCTParagraphStyleSpecifierMinimumLineHeight = 9,         //最小行高  
     kCTParagraphStyleSpecifierLineSpacing = 10,              //行距   
     kCTParagraphStyleSpecifierParagraphSpacing = 11,         //段落间距  在段的未尾(Bottom)加上间隔,这个值为负数。  
     kCTParagraphStyleSpecifierParagraphSpacingBefore = 12,   //段落前间距 在一个段落的前面加上间隔。TOP  
     kCTParagraphStyleSpecifierBaseWritingDirection = 13,     //基本书写方向  
     kCTParagraphStyleSpecifierMaximumLineSpacing = 14,       //最大行距  
     kCTParagraphStyleSpecifierMinimumLineSpacing = 15,       //最小行距  
     kCTParagraphStyleSpecifierLineSpacingAdjustment = 16,    //行距调整  
     kCTParagraphStyleSpecifierLineBoundsOptions = 17,

     kCTParagraphStyleSpecifierCount
};

2、对其属性

CTTextAlignment

typedef CF_ENUM(uint8_t, CTTextAlignment) {
    kCTTextAlignmentLeft      CT_ENUM_AVAILABLE(10_8, 6_0) = 0,//左对齐
    kCTTextAlignmentRight     CT_ENUM_AVAILABLE(10_8, 6_0) = 1,//右对齐
    kCTTextAlignmentCenter    CT_ENUM_AVAILABLE(10_8, 6_0) = 2,//居中对齐
    kCTTextAlignmentJustified CT_ENUM_AVAILABLE(10_8, 6_0) = 3,//文本对齐
    kCTTextAlignmentNatural   CT_ENUM_AVAILABLE(10_8, 6_0) = 4,//自然文本对齐

    kCTLeftTextAlignment CT_ENUM_DEPRECATED(10_5, 10_11, 3_2, 9_0) = kCTTextAlignmentLeft,
    kCTRightTextAlignment CT_ENUM_DEPRECATED(10_5, 10_11, 3_2, 9_0) = kCTTextAlignmentRight,
    kCTCenterTextAlignment CT_ENUM_DEPRECATED(10_5, 10_11, 3_2, 9_0) = kCTTextAlignmentCenter,
    kCTJustifiedTextAlignment CT_ENUM_DEPRECATED(10_5, 10_11, 3_2, 9_0) = kCTTextAlignmentJustified,
    kCTNaturalTextAlignment CT_ENUM_DEPRECATED(10_5, 10_11, 3_2, 9_0) = kCTTextAlignmentNatural
};

3、换行属性

CTLineBreakMode

typedef CF_ENUM(uint8_t, CTLineBreakMode) {
    kCTLineBreakByWordWrapping = 0,
    //出现在单词边界时起作用,如果该单词不在能在一行里显示时,整体换行。此为段的默认值。
    kCTLineBreakByCharWrapping = 1,
    //当一行中最后一个位置的大小不能容纳一个字符时,才进行换行。
    kCTLineBreakByClipping = 2,
    //超出画布边缘部份将被截除。
    kCTLineBreakByTruncatingHead = 3,
    //截除前面部份,只保留后面一行的数据。前部份以...代替。
    kCTLineBreakByTruncatingTail = 4,
    //截除后面部份,只保留前面一行的数据,后部份以...代替。
    kCTLineBreakByTruncatingMiddle = 5
    //在一行中显示段文字的前面和后面文字,中间文字使用...代替。
};

二、代码

1、对齐方式

这里写图片描述

//对齐方式
CTTextAlignment textAlignment = kCTTextAlignmentLeft;
CTParagraphStyleSetting alignmentStyleSetting;
alignmentStyleSetting.spec = kCTParagraphStyleSpecifierAlignment;
alignmentStyleSetting.valueSize = sizeof(textAlignment);
alignmentStyleSetting.value = &textAlignment;

2、首行缩进

这里写图片描述

//首行缩进
CGFloat firstLineIndentSize = 25.0f;
CTParagraphStyleSetting firstLineIndent;
firstLineIndent.spec = kCTParagraphStyleSpecifierFirstLineHeadIndent;
firstLineIndent.value = &firstLineIndentSize;
firstLineIndent.valueSize = sizeof(CGFloat); 

3、段前缩进

这里写图片描述
不包含第一行

//段前缩进(文字左侧距离context最左侧的距离)
CGFloat headIndentSize = 25.0f;
CTParagraphStyleSetting headIndent;
headIndent.spec = kCTParagraphStyleSpecifierHeadIndent;
headIndent.valueSize = sizeof(CGFloat);
headIndent.value = &headIndentSize;

4、断尾缩进

这里写图片描述

//断尾缩进(文字右侧距离context最左侧的距离)
CGFloat tailIndentSize = 251.0f;    //文字最左侧到文字最右侧的距离
CTParagraphStyleSetting tailIndent;
tailIndent.spec = kCTParagraphStyleSpecifierTailIndent;
tailIndent.value = &tailIndentSize;
tailIndent.valueSize = sizeof(float);

5、换行模式

这里写图片描述
其他换行模式可自行查看

//换行模式
CTLineBreakMode lineBreak = kCTLineBreakByCharWrapping;
CTParagraphStyleSetting lineBreakMode;
lineBreakMode.spec = kCTParagraphStyleSpecifierLineBreakMode;
lineBreakMode.value = &lineBreak;
lineBreakMode.valueSize = sizeof(CTLineBreakMode);

6、最大行高&最小行高

这里写图片描述

//最大行高
CGFloat maxHeightSize = 50.0f;  //最大行高不能超过50个像素,超过按照最大像素来
CTParagraphStyleSetting maxHeightSetting;
maxHeightSetting.spec = kCTParagraphStyleSpecifierMaximumLineHeight;
maxHeightSetting.value = &maxHeightSize;
maxHeightSetting.valueSize = sizeof(CGFloat);

//最小行高
CGFloat minHeightSize = 50.0f;  //最小行高不能小于50个像素,小于按照最小像素来
CTParagraphStyleSetting minHeightSetting;
minHeightSetting.spec = kCTParagraphStyleSpecifierMinimumLineHeight;
minHeightSetting.value = &minHeightSize;
minHeightSetting.valueSize = sizeof(CGFloat);

7、多行高

这里写图片描述

//多行高
CGFloat multipleHeight = 1.2f;  //1.2倍原来的高度
CTParagraphStyleSetting multipleHeightSetting;
multipleHeightSetting.spec = kCTParagraphStyleSpecifierLineHeightMultiple;
multipleHeightSetting.value = &multipleHeight;
multipleHeightSetting.valueSize = sizeof(CGFloat);

8、最大行距&最小行距

这里写图片描述

//最大行距
CGFloat maxLineSpace = 5.0f;//最大行距不能超过5像素,超过了按最大行距画图,最小行距同理,行距调整只在中间值中进行
CTParagraphStyleSetting maxLineSpaceSetting;
maxLineSpaceSetting.spec = kCTParagraphStyleSpecifierMaximumLineSpacing;
maxLineSpaceSetting.valueSize = sizeof(CGFloat);
maxLineSpaceSetting.value = &maxLineSpace;

//最小行距
CGFloat minLineSpace = 5.0f;//最小行距不能小于5像素,小于按最小行距画图
CTParagraphStyleSetting minLineSpaceSetting;
minLineSpaceSetting.spec = kCTParagraphStyleSpecifierMinimumLineSpacing;
minLineSpaceSetting.valueSize = sizeof(CGFloat);
minLineSpaceSetting.value = &minLineSpace;

9、行距

这里写图片描述

//行距
CGFloat lineSpace = 25.0f;  //行距25像素
CTParagraphStyleSetting lineSpaceSetting;
lineSpaceSetting.spec = kCTParagraphStyleSpecifierLineSpacing;
lineSpaceSetting.value = &lineSpace;
lineSpaceSetting.valueSize = sizeof(float);

10、段前间隔

段与段之间的距离
这里写图片描述

//段前间隔
CGFloat paragraghSpace = 15.0f;
CTParagraphStyleSetting paragraghInterval;
paragraghInterval.spec = kCTParagraphStyleSpecifierParagraphSpacing;
paragraghInterval.valueSize = sizeof(CGFloat);
paragraghInterval.value = &paragraghSpace;
版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS CoreText.framework --- 段落样子CTParagraphStyle

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。 [cpp] view plaincopy ...
  • Mideveloper
  • Mideveloper
  • 2013年11月27日 08:50
  • 3328

IOS CoreText.framework --- 段落样子CTParagraphStyle

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。 NSString *src = [NSString stringW...
  • fengsh998
  • fengsh998
  • 2013年03月21日 15:55
  • 21118

IOS CoreText --- 段落样子CTParagraphStyle

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。 [cpp] view plaincopy N...
  • sinat_27706697
  • sinat_27706697
  • 2015年05月29日 09:04
  • 1108

首行文字缩进text-indent

text-indent:2em; 解释一下:text的意思是文本,indent在计算机英语中意思是缩进,至于后面的2em意思就是2个相对单位; em又是什么单位? em这个单位的意思就是文字的高...
  • xiaoxiangyu5
  • xiaoxiangyu5
  • 2015年12月23日 17:54
  • 1498

CTParagraphStyle的属性

1、段落样式定义: kCTParagraphStyleSpecifierAlignment = 0, //对齐属性 kCTParagraphStyleSpec...
  • u010545480
  • u010545480
  • 2015年07月07日 10:59
  • 789

解决windows live writer的段首缩进问题

Windows live writer 默认是没有段首缩进的,并且不能修改默认字体和格式,这使得编辑出来的文本非常难看。 网上有一种说法是修改C:/Program Files/Windows Live...
  • xiao_wanpeng
  • xiao_wanpeng
  • 2011年05月01日 14:22
  • 1735

CoreText(二):段落CTParagraphStyle

一、定义1、段落样式定义CTParagraphStyleSpecifiertypedef CF_ENUM(uint32_t, CTParagraphStyleSpecifier) { kCT...
  • xiaoxiaobukuang
  • xiaoxiaobukuang
  • 2016年08月31日 17:52
  • 1224

CoreText --- 段落样子CTParagraphStyle

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。 [cpp] view plaincopy ...
  • sunyong445
  • sunyong445
  • 2014年06月11日 08:47
  • 577

CoreText.framework --- 段落样子CTParagraphStyle

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。 [cpp] view plaincop...
  • majiakun1
  • majiakun1
  • 2014年07月24日 19:07
  • 731

coreText

在前面一篇文章中,介绍了属性文字的基本使用,本章节主要针对文字的段落样式展开演示说明。 先定义一段演示文字(文字中有中,英文)。   [cpp] view plaincopy...
  • L_813815
  • L_813815
  • 2017年02月06日 13:57
  • 91
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CoreText(二):段落CTParagraphStyle
举报原因:
原因补充:

(最多只允许输入30个字)