En el iOS 5, la versión de mi aplicación he tenido:

[self.text drawInRect: stringRect
             withFont: [UIFont fontWithName: @"Courier" size: kCellFontSize]
        lineBreakMode: NSLineBreakByTruncatingTail
            alignment: NSTextAlignmentRight];

Estoy actualizando para iOS 7. El método anterior es obsoleto. Ahora estoy usando drawInRect:withAttributes:. El atributos parámetro es un NSDictionary objeto. Puedo conseguir drawInRect:withAttributes: a trabajar para la ex fuente parámetro uso de este:

      UIFont *font = [UIFont fontWithName: @"Courier" size: kCellFontSize];

      NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: font, NSFontAttributeName,
                                  nil];

      [self.text drawInRect: stringRect
             withAttributes: dictionary];

Lo que los pares clave-valor agrego a diccionario para obtener NSLineBreakByTruncatingTail y NSTextAlignmentRight?

OriginalEl autor StephenAshley.developer | 2013-09-22

2 Comentarios

  1. 139

    Hay una llave para ajustar el estilo de párrafo del texto (incluyendo los saltos de línea modo, la alineación del texto, y más).

    De docs:

    NSParagraphStyleAttributeName

    El valor de este atributo es una NSParagraphStyle objeto. Utilice este atributo para aplicar varios atributos para un rango de texto. Si no se especifica este atributo, la cadena usa el valor predeterminado de los atributos de párrafo, como devuelto por la defaultParagraphStyle método de NSParagraphStyle.

    Así, se puede intentar lo siguiente:

    UIFont *font = [UIFont fontWithName:@"Courier" size:kCellFontSize];
    
    ///Make a copy of the default paragraph style
    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    ///Set line break mode
    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    ///Set text alignment
    paragraphStyle.alignment = NSTextAlignmentRight;
    
    NSDictionary *attributes = @{ NSFontAttributeName: font,
                        NSParagraphStyleAttributeName: paragraphStyle };
    
    [text drawInRect:rect withAttributes:attributes];
    ¿Cómo encontraste esto? +1
    Si bien no puedo figura una menor variación – esto ciertamente funciona, pero parece adjudicar de trabajo sólo para agregar algún tipo de justificación!
    ¿Cómo puedo realizar la cadena de línea multi?

    OriginalEl autor Hejazi

  2. 5

    El código se va de esa manera:

    CGRect textRect = CGRectMake(x, y, length-x, maxFontSize);
    UIFont *font = [UIFont fontWithName:@"Courier" size:maxFontSize];
    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
        paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    
    
       paragraphStyle.alignment = NSTextAlignmentRight;
        NSDictionary *attributes = @{ NSFontAttributeName: font,
                                      NSParagraphStyleAttributeName: paragraphStyle,
                                      NSForegroundColorAttributeName: [UIColor whiteColor]};
    [text drawInRect:textRect withAttributes:attributes];

    OriginalEl autor Darius Miliauskas

Dejar respuesta

Please enter your comment!
Please enter your name here