3

共有する単一の画像に変換したい UITextView と UIImageView があります。

SaveImageView は、テキストビューの画像を保存する ImageView です。

Textview は画面上で移動できるので、最終的な位置を保存して SaveImageView に渡すことにしました。

最初に UItextView を画像に変換し、その位置を保存します。

次に、2 つの画像ビューを 1 つの画像に結合したいと考えています。

self.SaveTextView.frame = self.textView.frame;


UIGraphicsBeginImageContext (self.textView.bounds.size);

[self.textView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();


self.SaveTextView.image=resultingImage;

// 2 つの uiimageview を結合します

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0);

[self.BaseImageView.image drawInRect:CGRectMake(0, 0, self.BaseImageView.frame.size.width, self.BaseImageView.frame.size.height)];

[self.SaveTextView.image drawInRect:CGRectMake(self.SaveTextView.frame.origin.x, self.SaveTextView.frame.origin.y, self.SaveTextView.frame.size.width, self.SaveTextView.frame.size.height)];


_SaveImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

問題は、テキストビューに書き込む場所が保存された画像の同じ位置にないことです。テキストを含む画像がわずかに移動します。それは、私が書いた正確な場所であるはずですが、エラーの場所が見つかりません.

何か助けて??

4

2 に答える 2

2

このメソッドを実装して、スーパービューで呼び出してみてください:

@implementation UIView (ScreenShot)

- (UIImage *)screenShot
{
  UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0.0);
  [self.layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return image;
}

@end
于 2013-10-13T08:38:05.637 に答える
1

これを試して...

//Make Label
UILabel *_labelTimeOutName = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 428, 32)];
_labelTimeOutName.text = @"Your label text here";
_labelTimeOutName.minimumScaleFactor = 0.5;
_labelTimeOutName.numberOfLines = 1;
_labelTimeOutName.textColor = [UIColor whiteColor];
_labelTimeOutName.backgroundColor = [UIColor clearColor];
_labelTimeOutName.font  = [UIFont fontWithName:@"TrebuchetMS-Bold" size:24];
_labelTimeOutName.textAlignment = NSTextAlignmentCenter;

//add label inside a temp View
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 428, 32)];
tempView.backgroundColor = [UIColor clearColor];
[tempView addSubview:_labelTimeOutName];

//render image
//CGContextRef context = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContextWithOptions(tempView.bounds.size, tempView.opaque, 0.0);
// The view to be rendered
[[tempView layer] renderInContext:UIGraphicsGetCurrentContext() ]; //context];
// Get the rendered image
//////////////////////////////////////////////////////////////////////
UIImage *FinalTextIamge = UIGraphicsGetImageFromCurrentImageContext();
//////////////////////////////////////////////////////////////////////
UIGraphicsEndImageContext();

楽しみ!

于 2014-07-28T18:48:13.870 に答える