2017-01-24 5 views
0

Я пытаюсь нарисовать текст на UIImage. Этот метод ниже работает, но текст отключен. У меня есть метка *l в центре кадра. После self.image = [self drawText] текст находится в верхнем левом углу изображения.Добавление текста в UIImage ... Неправильное место

-(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; 
} 

ответ

0

Вы используете код

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

Чтобы нарисовать текст. В прямоугольнике rect вы указываете элементы управления, где текст нарисован, в координатах вашего контекста (где 0,0 - левая верхняя часть вашего контекста.)

Если вы хотите, чтобы ваш текст был центрирован в вашем контексте, вычислите центр если ваш контекст, и отрегулируйте источник вашего прямоугольника, чтобы центрировать текст там.

Я оставлю вас придумать математику. Это всего лишь несколько строк кода.

+0

'rect.x = 119.5' и' rect.y = 340.5'. Это координаты метки. Вот почему я смущен, почему он находится в верхнем левом углу. @Duncan C – Peter

Смежные вопросы