Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 定义核心文本段落而不使用换行符?_Ios_Iphone_Core Text_Paragraph - Fatal编程技术网

Ios 定义核心文本段落而不使用换行符?

Ios 定义核心文本段落而不使用换行符?,ios,iphone,core-text,paragraph,Ios,Iphone,Core Text,Paragraph,在NSAttributedString中为段落应用适当的顶部和底部间距时,我遇到了一个小问题。我使用此代码设置段落属性: int sf = sizeof(CGFloat); CTParagraphStyleSetting settings[ParagraphStylesSupported] = { { kCTParagraphStyleSpecifierAlignment, sizeof(QuartzTextAlignme

在NSAttributedString中为段落应用适当的顶部和底部间距时,我遇到了一个小问题。我使用此代码设置段落属性:

int sf = sizeof(CGFloat);
        CTParagraphStyleSetting settings[ParagraphStylesSupported] = 
            {
                { kCTParagraphStyleSpecifierAlignment, sizeof(QuartzTextAlignment), &style.textAlignment },
                { kCTParagraphStyleSpecifierParagraphSpacingBefore, sf, &marginTop},
                { kCTParagraphStyleSpecifierParagraphSpacing, sf, &marginBot},
                { kCTParagraphStyleSpecifierMinimumLineHeight, sf, &lineHeight},

                { kCTParagraphStyleSpecifierLineSpacing, sf, &lineSpacing},
                { kCTParagraphStyleSpecifierFirstLineHeadIndent, sf, &style.firstLineIndent},

            };

            CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, ParagraphStylesSupported);


            [string addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(id)paragraphStyle range:item.range];
            CFRelease(paragraphStyle);
正在按预期应用文本属性。 但段落对齐几乎没有问题:

  • 除非在属性范围的开头有换行符,\n否则段落不是彼此后面的位置,而是“内联”流动
  • 当我添加换行符时,段落被正确地一个接一个地放置,但是换行高度被添加到间距“ParagraphSpacing”间隙中
  • kCTParagraphStyleSpecifierParagraphSpacingBefore还影响段落范围内的换行符
  • 什么核心文本布局引擎解释为段落指示符?
    是属性字符串中的每个换行符吗?

    在核心文本中,换行符(
    \n
    )以段落结尾。我认为没有办法告诉它使用不同的字符

    如果您在一行中放置两个换行符,那么核心文本的作用就像您有一个空段落一样,因此它将增加额外的间距


    确保每个段落后只有一个换行符。如果段落之间的间距仍然过大,则需要在或kctragraphstylespecifierparagraphspacingbefore或
    kctraphstylespecifierparagraphspacing
    (或两者兼有)。

    似乎是正确的。我的另一个问题是:为什么kCTParagraphStyleSpecifierParagraphSpacingBefore对NSAttributedString的第一段不起作用?