Maison  >  Article  >  interface Web  >  À propos du développement MacOS - NSParagraphStyle

À propos du développement MacOS - NSParagraphStyle

一个新手
一个新手original
2017-09-27 10:12:181574parcourir
  • Introduction

  • Comment utiliser

  • Calculer la hauteur du paragraphe

  • Attributs associés

    • alignment - 对齐方式
      firstLineHeadIndent - 首行缩进
      headIndent -  缩进
      tailIndent -  尾部缩进
      lineBreakMode - 断行方式
      maximumLineHeight - 最大行高
      minimumLineHeight - 最低行高
      lineSpacing - 行距
      paragraphSpacing  -段距
      paragraphSpacingBefore - 段首空间
      baseWritingDirection - 句子方向
      lineHeightMultiple - 可变行高乘因数
      hyphenationFactor - 连字符属性

Introduction

NSParagraphStyleAttributeName est utilisé pour définir NSAttributedString, similaire à NSFontAttributeName.
La différence est la suivante : NSParagraphStyleAttributeName sert à définir le style de paragraphe, NSFontAttributeName sert à définir la police.


Méthode d'utilisation

- (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];
}

Calculer la hauteur du paragraphe

 - (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;

}

Attributs associés

  • NSMutableParagraphStyle et NSParagraphStyle incluent les attributs suivants

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
*/
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn