Le nombre de lignes attribuées à partir de la fondation CoreText semble incorrect. J'ai utilisé le code suivant pour extraire le nombre de lignes qui devraient être présentes dans une chaîne attribuée.La valeur de LineCount pour attributeString de CoreText est incorrecte.
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"\nMe and Me\n" attributes:nil];
CGPathRef path = CGPathCreateWithRect(CGRectMake(0, 0, 335, 1000000), nil);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attributedString);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0,0), path, NULL);
NSLog(@"%ld", numberOfLines(frame));
}
static CFIndex numberOfLines(CTFrameRef frame) {
CGRect bounds = CGRectNull;
CFArrayRef lines = CTFrameGetLines(frame);
CFIndex numLines = CFArrayGetCount(lines);
CGPoint *lineOrigins = malloc((numLines + 1) * sizeof(CGPoint));
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), lineOrigins);
return numLines;
}
Je m'attendais à ce que le nombre de lignes à retourner soit égal à trois. Un pour la première nouvelle ligne, un pour le texte "Me and Me", et un pour le dernier newline. Des idées pourquoi il est plutôt de retour 2?
Il n'y a aucun moyen de préciser que ses trois lignes puis au lieu de 2 avec le retour à la ligne ? – MichaelGofron
Utilisez juste trois newlines: '@" \ nMe et moi \ n \ n "' – CRD