iOS: Comment définir la police lors du dessin de text en génération pdf?

Je génère un pdf dans l'application ios, en utilisant la fonction drawpdf, tout en appelant la fonction drawtext dans la class nsobject, il dessine le text clairement en fonction du cadre et de la string que j'ai spécifié.

Mon code est

+(void)drawText:(NSSsortingng*)textToDraw inFrame:(CGRect)frameRect { CFSsortingngRef ssortingngRef = (__bridge CFSsortingngRef)textToDraw; // Prepare the text using a Core Text Framesetter CFAtsortingbutedSsortingngRef currentText = CFAtsortingbutedSsortingngCreate(NULL, ssortingngRef, NULL); CTFramesetterRef framesetter = CTFramesetterCreateWithAtsortingbutedSsortingng(currentText); CGMutablePathRef framePath = CGPathCreateMutable(); CGPathAddRect(framePath, NULL, frameRect); // Get the frame that will do the rendering. CFRange currentRange = CFRangeMake(0, 0); CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL); CGPathRelease(framePath); // Get the graphics context. CGContextRef currentContext = UIGraphicsGetCurrentContext(); // Put the text masortingx into a known state. This ensures // that no old scaling factors are left in place. CGContextSetTextMasortingx(currentContext, CGAffineTransformIdentity); // Core Text draws from the bottom-left corner up, so flip // the current transform prior to drawing. CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2); CGContextScaleCTM(currentContext, 1.0, -1.0); // Draw the frame. CTFrameDraw(frameRef, currentContext); CGContextScaleCTM(currentContext, 1.0, -1.0); CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2); CFRelease(frameRef); CFRelease(ssortingngRef); CFRelease(framesetter); } 

Mais j'ai besoin de mettre la police de caractères du text plus grande et plus audacieuse.

j'ai utilisé

 CGContextSelectFont(currentContext, "Helvetica", 20, kCGEncodingMacRoman); 

et

 CGContextSetFontSize ( currentContext, 20); 

en reference à la réponse fournie par mr.texian dans la fonction ci-dessus, mais pas de changements

Je montre le pdf généré dans uiwebview.

J'ai reçu ce code du net. Je ne savais pas où modifier le code pour le réglage de la police. Toute aide serait appréciée.

S'il vous plaît essayez CoreText, une class de base très utile. Voici l'exemple de code:

 CTFontRef font = CTFontCreateWithName((CFSsortingngRef)@"Arial", 16.0f, nil); CFAtsortingbutedSsortingngSetAtsortingbute(textSsortingng,CFRangeMake(0, strLength-1), kCTFontAtsortingbuteName, font); 

Ajoutez ceci au pointeur CFAtsortingbuttedSsortingngRef .

Cela devrait fonctionner.

Je pense que ce sont ce que vous cherchez

 void CGContextSelectFont ( CGContextRef c, const char *name, CGFloat size, CGTextEncoding textEncoding ); 

et

 void CGContextSetFontSize ( CGContextRef c, CGFloat size ); 

Quelque chose comme…

 CGContextSelectFont(currentContext, "Helvetica", 20, kCGEncodingMacRoman); 

ou

 CGContextSetFontSize ( currentContext, 20); 

Hope that helps, here is more … Guide de programmation 2D Quartz – Texte

Créer un CTFont utilisant CTFontCreateWithNameAndOptions (vérifier: CTFont Reference )

Créer une string avec attributes mutables ( reference CFMutableAtsortingbutedSsortingng ) Vous pouvez modifier cette string mutable et apporter les modifications souhaitées. Dans votre cas, définissez sa police.

Créez votre CTFrameSetter avec cette string et la police devrait apparaître.

Si vous voulez être complet et avoir assez de time, lisez le Guide de programmation des strings

Si vous voulez un exemple de code rapide pour l'utilisation de CFMutableAtsortingbutedSsortingng, searchz CFMutableAtsortingbutedSsortingng sur stackoverflow et la plupart des réponses vous donneront une idée de la façon de l'utiliser. Par exemple, cette question

Vous pouvez essayer "libHaru" pour générer des pdf dans le projet iPhone.

https://github.com/akisute/iPhonePDF

J'espère que cela aide !!!

Qu'en est-il de CGContextSetFont ?

 NSSsortingng *fontName = @"Helvetica"; CGFontRef fontRef = CGFontCreateWithFontName((__bridge CFSsortingngRef)fontName); CGContextSetFont(context, fontRef); CGContextSetFontSize(context, 20); 

Ne pas oublier de le libérer:

 CGFontRelease(fontRef); 

Après beaucoup de search, fnd que la réponse de itsdamslife est correcte, mais elle n'a pas supporté mon code.

Mais, je l'ai résolu à bon marché. c'est-à-dire, appelé plusieurs fois le drawText: fonction pour get une police en gras.

 for(int i=0;i<5;i++) { [self drawtext]; }