0

これが私がやろうとしていることです

  1. UIImageビューを作成します。
  2. その上にいくつかの描画を行います
  3. 共有ボタンを押して、画像をその上の図面と共有します。

私のコードはiPadとiPhoneで完璧に動作します。問題は網膜ディスプレイにあります。だから私の推測では、いくつかのスケールは正しく処理されていませんが、私が間違っていることはわかりません。これは私のコードです

// Create the UIImageView named centerCanvas
// Do the drawing
CGPoint origin = centerCanvas.frame.origin;
CGSize  size   = centerCanvas.frame.size;
CGSize screenSize = [self returnScreenSize];
CGRect  rect   = CGRectMake(origin.x, origin.y, size.width, size.height);
UIGraphicsBeginImageContext(screenSize);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], rect);
[shareView setImage:[UIImage imageWithCGImage:imageRef]]; 


-(CGSize) returnScreenSize
{
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    CGFloat screenScale = [[UIScreen mainScreen] scale];
    CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale,screenBounds.size.height * screenScale);
    return screenSize;
}
4

1 に答える 1

1

使ってみてください

    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);

1に等しいスケール係数(上記の3番目の引数)を使用する古いUIGraphicsBeginImageContextの代わりに、スケール係数0.0として指定することにより、現在の画面のスケール係数を取得します。リファレンスをご覧ください。

于 2012-06-29T18:58:28.807 に答える