2014-01-25 2 views
0

У меня есть UILabel с атрибутной строкой, которую пользователь редактирует и в конечном итоге рисует изображение. Вот как я обновляю UILabel каждый раз, когда пользователь меняет текст в UITextview и подтверждает.AttributedString иногда не удалось нарисовать, используя drawInRect

- (void)displayPicture { 
    [self.view endEditing:YES]; 
    self.attributedStr = [[NSAttributedString alloc] initWithString:self.textInputField.text attributes:self.attributes]; 
    self.displayField.attributedText = [[NSAttributedString alloc] initWithString:self.textInputField.text attributes:self.attributes]; 
    self.displayField.lineBreakMode = NSLineBreakByCharWrapping; 
    [self.displayField sizeToFit]; 
    [self.displayField setNeedsDisplay]; 
    self.textInputField.hidden = YES; 
    self.tapRecog.enabled = YES; 
    self.displayField.hidden = NO; 
} 

В настоящее время UILabel отображает то, как желательно на экране.

Когда пользователь хочет Pic + текст в сочетании с UIImage и отправил, следующий код реализован:

- (UIImage *)generatePicture { 
UIGraphicsBeginImageContextWithOptions(CGSizeMake(Picture_Standard_Width, Picutre_Standard_Height), YES, 0.0f); 
[self.bgImageView.image drawInRect:CGRectMake(0, 0, Picture_Standard_Width, Picutre_Standard_Height)]; 
CGRect originalFrame = self.displayField.frame; 
CGRect adjustedFrame = CGRectMake(originalFrame.origin.x, originalFrame.origin.y - self.bgImageView.frame.origin.y, originalFrame.size.width, originalFrame.size.height); 
[self.displayField.attributedText drawInRect:adjustedFrame]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
self.imageToUpload = newImage; 
UIGraphicsEndImageContext(); 
return self.imageToUpload; 
} 

Большинство раз приписываемых показывает только одну или две строки в формируемого изображения. Вероятно, это может иметь какое-то отношение к кадру. Меня просто смущает тот факт, что атрибутная строка хорошо отображается в ярлыке и по-разному, когда я рисую ее.

Будем очень благодарны за помощь в использовании атрибута, нарисованной правильно.

ответ

0

При запуске изображения вы начинаете новый контекст, в котором вы рисуете.

Контекст - это изображение, а 0,0 - угол изображения.

так что вам нужно настроить исходный фрейм, чтобы учесть, что теперь вы больше не входите в контекст изображения, а в контекст изображения.

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