首页  >  文章  >  web前端  >  关于MacOS开发-NSParagraphStyle

关于MacOS开发-NSParagraphStyle

一个新手
一个新手原创
2017-09-27 10:12:181597浏览
  • 简介

  • 使用方法

  • 计算段落高度

  • 相关属性

    • 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的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn