我的UILabel
带有属性字符串,用户可以编辑并最终在图像上绘制。以下是每次用户更改UILabel
中的文字并确认时更新UITextview
的方式。
- (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;
}
大多数情况下,属性仅在生成的图像中显示一行或两行。它很可能与框架有关。我很容易被这样一个事实所困惑:属性字符串在标签中显示得很好,而在我绘制时则不同。
任何有关正确绘制referencedString的帮助都将非常感激。
答案 0 :(得分:0)
当您开始拍摄照片时,您将开始绘制新的上下文。
上下文是图像,0,0是图像角落。
所以你必须调整你的原始框架,以考虑到你现在不再进入视图的上下文而是进入图像的上下文