关于MacOS开发-NSParagraphStyle
程序员文章站
2022-04-20 19:55:29
...
简介
使用方法
计算段落高度
相关属性
alignment - 对齐方式 firstLineHeadIndent - 首行缩进 headIndent - 缩进 tailIndent - 尾部缩进 lineBreakMode - 断行方式 maximumLineHeight - 最大行高 minimumLineHeight - 最低行高 lineSpacing - 行距 paragraphSpacing -段距 paragraphSpacingBefore - 段首空间 baseWritingDirection - 句子方向 lineHeightMultiple - 可变行高乘因数 hyphenationFactor - 连字符属性
简介
NSParagraphStyleAttributeName 用于设置 NSAttributedString,和 NSFontAttributeName 类似。
不同的是:NSParagraphStyleAttributeName 是设置段落风格,NSFontAttributeName是设置字体。
使用方法
- (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle alloc] init]; [textStyle setAlignment:NSTextAlignmentCenter]; [textStyle setLineBreakMode:NSLineBreakByTruncatingTail]; NSDictionary *attributes = @{NSFontAttributeName: [NSFont systemFontOfSize:18], NSForegroundColorAttributeName: [NSColor whiteColor], NSParagraphStyleAttributeName: textStyle}; float w = self.frame.size.width; float h = self.frame.size.height; float str_h = 20; NSAttributedString *attributedText4 = [[NSAttributedString alloc] initWithString:@"这是一个 string" attributes:attributes]; }
计算段落高度
- (void)countHeight{ NSString *originStr = @"ashdhsaksah 和就会撒大声地哈萨克的"; NSMutableAttributedString *attriStr = [[NSMutableAttributedString alloc] initWithString:originStr]; NSFont *descFont = [NSFont systemFontOfSize:16]; NSMutableParagraphStyle *descStyle = [[NSMutableParagraphStyle alloc]init]; [descStyle setLineSpacing:1];//行间距 CGFloat destinW = 100; CGSize descSize = [originStr boundingRectWithSize:CGSizeMake(destinW, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:descFont, NSParagraphStyleAttributeName :descStyle} context:nil].size; }
相关属性
NSMutableParagraphStyle与NSParagraphStyle包括一下属性
alignment - 对齐方式 firstLineHeadIndent - 首行缩进 headIndent - 缩进 tailIndent - 尾部缩进 lineBreakMode - 断行方式 maximumLineHeight - 最大行高 minimumLineHeight - 最低行高 lineSpacing - 行距 paragraphSpacing -段距 paragraphSpacingBefore - 段首空间 baseWritingDirection - 句子方向 lineHeightMultiple - 可变行高,乘因数。 hyphenationFactor - 连字符属性
(void)setParagraphStyle{ NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; paragraphStyle.lineSpacing = 20.;// 行间距 paragraphStyle.lineHeightMultiple = 1.5;// 行高倍数(1.5倍行高) paragraphStyle.firstLineHeadIndent = 30.0f;//首行缩进 paragraphStyle.minimumLineHeight = 10;//最低行高 paragraphStyle.maximumLineHeight = 20;//最大行高(会影响字体) paragraphStyle.alignment = NSTextAlignmentLeft;// 对齐方式 paragraphStyle.defaultTabInterval = 144;// 默认Tab 宽度 paragraphStyle.headIndent = 20;// 起始 x位置 paragraphStyle.tailIndent = 320;// 结束 x位置(不是右边间距,与inset 不一样) paragraphStyle.paragraphSpacing = 44.;// 段落间距 paragraphStyle.paragraphSpacingBefore = 44.;// 段落头部空白(实测与上边的没差啊?) paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;// 分割模式 /* NSLineBreakByWordWrapping = 0, // Wrap at word boundaries, default NSLineBreakByCharWrapping, // Wrap at character boundaries NSLineBreakByClipping, // Simply clip NSLineBreakByTruncatingHead, // Truncate at head of line: “…wxyz” NSLineBreakByTruncatingTail, // Truncate at tail of line: “abcd…” NSLineBreakByTruncatingMiddle // Truncate middle of line: “ab…yz” */ paragraphStyle.baseWritingDirection = NSWritingDirectionRightToLeft;// 段落方向 /* NSWritingDirectionNatural = -1, // Determines direction using the Unicode Bidi Algorithm rules P2 and P3 NSWritingDirectionLeftToRight = 0, // Left to right writing direction NSWritingDirectionRightToLeft = 1 */ }
以上就是关于MacOS开发-NSParagraphStyle的详细内容,更多请关注其它相关文章!
上一篇: Vue filter的使用详解