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 };
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 };
CTLineBreakMode
typedef CF_ENUM(uint8_t, CTLineBreakMode) { kCTLineBreakByWordWrapping = 0, //出現在單詞邊界時起作用,如果該單詞不在能在一行裡顯示時,整體換行。此為段的默認值。 kCTLineBreakByCharWrapping = 1, //當一行中最後一個位置的大小不能容納一個字符時,才進行換行。 kCTLineBreakByClipping = 2, //超出畫布邊緣部份將被截除。 kCTLineBreakByTruncatingHead = 3, //截除前面部份,只保留後面一行的數據。前部份以...代替。 kCTLineBreakByTruncatingTail = 4, //截除後面部份,只保留前面一行的數據,後部份以...代替。 kCTLineBreakByTruncatingMiddle = 5 //在一行中顯示段文字的前面和後面文字,中間文字使用...代替。 };
//對齊方式 CTTextAlignment textAlignment = kCTTextAlignmentLeft; CTParagraphStyleSetting alignmentStyleSetting; alignmentStyleSetting.spec = kCTParagraphStyleSpecifierAlignment; alignmentStyleSetting.valueSize = sizeof(textAlignment); alignmentStyleSetting.value = &textAlignment;
//首行縮進 CGFloat firstLineIndentSize = 25.0f; CTParagraphStyleSetting firstLineIndent; firstLineIndent.spec = kCTParagraphStyleSpecifierFirstLineHeadIndent; firstLineIndent.value = &firstLineIndentSize; firstLineIndent.valueSize = sizeof(CGFloat);
不包含第一行<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
//段前縮進(文字左側距離context最左側的距離)
CGFloat headIndentSize = 25.0f;
CTParagraphStyleSetting headIndent;
headIndent.spec = kCTParagraphStyleSpecifierHeadIndent;
headIndent.valueSize = sizeof(CGFloat);
headIndent.value = &headIndentSize;
//斷尾縮進(文字右側距離context最左側的距離) CGFloat tailIndentSize = 251.0f; //文字最左側到文字最右側的距離 CTParagraphStyleSetting tailIndent; tailIndent.spec = kCTParagraphStyleSpecifierTailIndent; tailIndent.value = &tailIndentSize; tailIndent.valueSize = sizeof(float);
其他換行模式可自行查看
//換行模式 CTLineBreakMode lineBreak = kCTLineBreakByCharWrapping; CTParagraphStyleSetting lineBreakMode; lineBreakMode.spec = kCTParagraphStyleSpecifierLineBreakMode; lineBreakMode.value = &lineBreak; lineBreakMode.valueSize = sizeof(CTLineBreakMode);
//最大行高 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);
//多行高 CGFloat multipleHeight = 1.2f; //1.2倍原來的高度 CTParagraphStyleSetting multipleHeightSetting; multipleHeightSetting.spec = kCTParagraphStyleSpecifierLineHeightMultiple; multipleHeightSetting.value = &multipleHeight; multipleHeightSetting.valueSize = sizeof(CGFloat);
//最大行距 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;
//行距 CGFloat lineSpace = 25.0f; //行距25像素 CTParagraphStyleSetting lineSpaceSetting; lineSpaceSetting.spec = kCTParagraphStyleSpecifierLineSpacing; lineSpaceSetting.value = &lineSpace; lineSpaceSetting.valueSize = sizeof(float);
段與段之間的距離
//段前間隔 CGFloat paragraghSpace = 15.0f; CTParagraphStyleSetting paragraghInterval; paragraghInterval.spec = kCTParagraphStyleSpecifierParagraphSpacing; paragraghInterval.valueSize = sizeof(CGFloat); paragraghInterval.value = ¶graghSpace;