Estoy tratando de averiguar cómo tomar una NSAttributedString y usarlo en el Núcleo de Texto en el iPad. Vi uno de la WWDC videos (110), que ha diapositivas (pero no el código fuente), y se describe cómo crear un NSAttributedString, a continuación, sólo tienes que poner en un CTFramesetterRef:

CTFontRef helveticaBold = CTFontCreateWithName( CFSTR("Helvetica-Bold"), 24.0, NULL);

NSString* unicodeString = NSLocalizedString(@"TitleString", @"Window Title");
CGColorRef color = [UIColor blueColor].CGColor; NSNumber* underline = [NSNumber numberWithInt:kCTUnderlineStyleSingle|kCTUnderlinePatternDot];
NSDictionary* attributesDict = [NSDictionary dictionaryWithObjectsAndKeys:helveticaBold, (NSString*)kCTFontAttributeName, color, (NSString*)kCTForegroundColorAttributeName, underline, (NSString*)kCTUnderlineStyleAttributeName, nil];
NSAttributedString* stringToDraw = [[NSAttributedString alloc] initWithString:unicodeString attributes:attributesDict];

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(stringToDraw);

CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CFRelease(framesetter);
CTFrameDraw(frame, context);
CFRelease(frame);

Pero cuando lo intento, lanza el error:

Pasando argumento 1 de ‘CTFramesetterCreateWithAttributedstring’ desde incompatible tipo de puntero

Son CFAttributedString y NSAttributedString gratuito, el puente’? He leído por ahí que esto es cierto sólo en OSX, pero esto es lo que Apple lo hacen en su demo…

Gracias!

:-Joe

fueron capaces de obtener el subrayado de puntos para mostrar? Solo me dan la llanura único subrayado en el texto.

OriginalEl autor jowie | 2010-09-22

3 Comentarios

  1. 8

    Puede descargar el WWDC10 código fuente aquí. Además, el uso gratuito de puente y explícitamente su stringToDraw a un CFAttributedStringRef.

    Gracias, pero el link que dio sigue diciendo que mi sesión ha caducado (incluso cuando intento ingresar de nuevo). He descargado el WWDC10 código de ejemplo de antes, pero 110 no 🙁
    Aparte de eso, su solución funcionó, gracias! 🙂
    podría usted por favor enviar final del código de trabajo.
    Acaba de cambiar NSAttributedString* stringToDraw = [[NSAttributedString alloc] initWithString:unicodeString attributes:attributesDict]; a CFAttributedStringRef stringToDraw = (CFAttributedStringRef)[[NSAttributedString alloc] initWithString:unicodeString attributes:attributesDict];

    OriginalEl autor jer

  2. 3

    Usted está casi allí. Acaba de lanzar el CTFontRef a un id tipo cuando se agregan a los atributos del diccionario.

    CTFontRef helveticaBold = CTFontCreateWithName( CFSTR("Helvetica-Bold"), 24.0, NULL);
    
    NSString* unicodeString = NSLocalizedString(@"TitleString", @"Window Title");
    
    CGColorRef color = [UIColor blueColor].CGColor; 
    NSNumber* underline = [NSNumber numberWithInt:
        kCTUnderlineStyleSingle|kCTUnderlinePatternDot];
    
    NSDictionary* attributesDict = [NSDictionary dictionaryWithObjectsAndKeys:
                        (id)helveticaBold, (NSString*)kCTFontAttributeName, 
                        color, (NSString*)kCTForegroundColorAttributeName, 
                        underline, (NSString*)kCTUnderlineStyleAttributeName, nil];
    
    NSAttributedString* stringToDraw = [[NSAttributedString alloc] 
                                initWithString:unicodeString
                                attributes:attributesDict];

    OriginalEl autor nevan king

Dejar respuesta

Please enter your comment!
Please enter your name here