2017-01-24 2 views
0

J'essaie de dessiner du texte sur un UIImage. Cette méthode ci-dessous fonctionne, mais le texte est désactivé. J'ai l'étiquette *l au centre du cadre. Après self.image = [self drawText], le texte est dans le coin supérieur gauche de l'image.Ajout de texte à UIImage ... Mauvais emplacement

-(UIImage*) drawText{ 
    UIGraphicsBeginImageContextWithOptions(_creatorImageView.image.size, false, _creatorImageView.image.scale); 
    [_creatorImageView.image drawInRect:CGRectMake(0,0,_creatorImageView.image.size.width, _creatorImageView.image.size.height)]; 

    NSLog(@"Caption ARRY: %@", _creatorImageView.captionArray); 
    for (UILabel *l in _creatorImageView.captionArray){ 
     NSLog(@"%f %f", l.frame.origin.x, l.frame.origin.y); 
     CGRect rect = CGRectMake(l.frame.origin.x, l.frame.origin.y, _creatorImageView.image.size.width, _creatorImageView.image.size.height); 
     [l.textColor set]; 
     CGFloat radians = atan2f(l.transform.b, l.transform.a); 
     CGFloat degrees = radians * (180/M_PI); 

     //CGContextConcatCTM(UIGraphicsGetCurrentContext(), CGAffineTransformMakeScale(l.transform.tx, l.transform.ty)); 
     //CGContextConcatCTM(UIGraphicsGetCurrentContext(), CGAffineTransformMakeRotation(degrees)); 

     //NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; 
     //[paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping]; 
     //[paragraphStyle setAlignment:NSTextAlignmentCenter]; 

     NSDictionary *attributes = @{ NSFontAttributeName: l.font, 
            NSForegroundColorAttributeName: l.textColor, 
            NSBackgroundColorAttributeName: l.backgroundColor}; 
            //NSParagraphStyleAttributeName:paragraphStyle}; 

     [l.text drawInRect:rect withAttributes:attributes]; 
     NSLog(@"TEXT: %@", l.text); 

    } 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

Répondre

0

Vous utilisez le code

[l.text drawInRect:rect withAttributes:attributes]; 

Pour dessiner votre texte. Le rectangle rect que vous spécifiez contrôle où le texte est dessiné, dans les coordonnées de votre contexte (où 0,0 est l'angle supérieur gauche de votre contexte.)

Si vous souhaitez que votre texte soit centré dans votre contexte, calculez le centre si votre contexte, et ajustez l'origine de votre rect pour centrer le texte là.

Je vais vous laisser travailler les maths. Ce ne serait que quelques lignes de code.

+0

Les 'rect.x = 119.5' et' rect.y = 340.5'. C'est les coordonnées de l'étiquette. C'est pourquoi je suis confus quant à savoir pourquoi c'est dans le coin supérieur gauche. @Duncan C – Peter