drawInRect: withAtsortingbutes vs drawInRect: avecFont: lineBreakMode: alignment

Je travaille sur une nouvelle version de mon application et je tente de replace les messages obsolètes, mais je ne suis pas en mesure de dépasser celui-ci.

Je n'arrive pas à comprendre pourquoi drawInRect:withAtsortingbutes ne fonctionne pas. Le code s'affiche correctement lorsque drawInRect:withFont:lineBreakMode:alignment message d' drawInRect:withFont:lineBreakMode:alignment est envoyé mais ne fonctionne pas lorsque drawInRect:withAtsortingbutes est envoyé.

J'utilise le même rect et la même police et je crois ce que je crois être le même style de text. Les constantes sont juste en train de positionner le rect juste en dessous d'une image, mais j'utilise le même rect pour les deux appels, donc je suis certain que le rectangle est correct.

(Notez que bs.name utilisé ci-dessous est un object NSSsortingng)

  CGRect textRect = CGRectMake(fCol*kRVCiPadAlbumColumnWidth, kRVCiPadAlbumColumnWidth-kRVCiPadTextLabelYOffset, kRVCiPadAlbumColumnWidth, kRVCiPadTextLabelHeight); NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; textStyle.lineBreakMode = NSLineBreakByWordWrapping; textStyle.alignment = NSTextAlignmentCenter; UIFont *textFont = [UIFont systemFontOfSize:16]; 

Cela ne fonctionne pas (rien n'est dessiné sur l'écran) en utilisant les variables ci-dessus

  [bs.name drawInRect:textRect withAtsortingbutes:@{NSFontAtsortingbuteName:textFont, NSParagraphStyleAtsortingbuteName:textStyle}]; 

Cela fonctionne (la string est dessinée correctement sur l'écran) en utilisant les mêmes variables que ci-dessus

  [bs.name drawInRect:textRect withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter]; 

Toute aide serait géniale. Merci.

Pour définir la couleur du text, vous devez passer NSForegroundColorAtsortingbuteName dans l'atsortingbut en tant que paramètre supplémentaire.

 NSDictionary *dictionary = @{ NSFontAtsortingbuteName: self.font, NSParagraphStyleAtsortingbuteName: paragraphStyle, NSForegroundColorAtsortingbuteName: self.textColor}; 

J'ai fait un UIView avec drawRect: contenant uniquement le code que vous avez fourni

 - (void)drawRect:(CGRect)frame { NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; textStyle.lineBreakMode = NSLineBreakByWordWrapping; textStyle.alignment = NSTextAlignmentCenter; UIFont *textFont = [UIFont systemFontOfSize:16]; NSSsortingng *text = @"Lorem ipsum"; // iOS 7 way [text drawInRect:frame withAtsortingbutes:@{NSFontAtsortingbuteName:textFont, NSParagraphStyleAtsortingbuteName:textStyle}]; // pre iOS 7 way CGFloat margin = 16; CGRect bottomFrame = CGRectMake(0, margin, frame.size.width, frame.size.height - margin); [text drawInRect:bottomFrame withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter]; } 

Je ne vois aucune différence entre les sorties de ces deux methods. Peut-être que le problème est ailleurs dans votre code?