0

iPad/iPhone アプリのスクリーンショットを撮り、それを「UIImageView A」の境界に制限するだけでなく、スクリーンショットに「UIImageView A」の上に配置されるコントロール (UIImageView または UILabels) を含めるにはどうすればよいですか? 標準ディスプレイと Retina ディスプレイを比較すると、めちゃくちゃになりますか?

前もって感謝します!

例

4

2 に答える 2

2

もう 1 つのアイデアは、単純に昔ながらの方法でスクリーンショットを撮ることです。たとえば、この関連する質問の回答を参照してから、「A」UIView のフレーム rect にトリミングします。

于 2013-03-29T14:39:00.887 に答える
0

UIImageView はサブビューを持つことを意図していないため、囲んでいるビューが必要になります。キャプチャしたいものはすべて、その囲んでいるビュー内に配置します (単純な UIView で十分です)。以下は、ビューの変換などを無視する非常に単純な実装です。

// Helper function, calls drawRect: recursively
void drawViewAndSubviews (UIView* view) {
  [view drawRect:view.bounds];
  CGContextRef ctx = UIGraphicsGetCurrentContext();
  for (UIView* subview in view.subviews) {
    CGPoint origin = subview.frame.origin;
    CGContextTranslateCTM(ctx, origin.x, origin.y);
    drawViewAndSubviews(subview);
    CGContextTranslateCTM(ctx, -origin.x, -origin.y);
  }
}

- (void)takeScreenshot:(UIView *)view {
  UIGraphicsBeginImageContext(view.bounds.size);
  drawViewAndSubviews(view);
  UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  // Now 'image' has a snapshot of 'view' and its subviews
}
于 2013-03-29T15:06:43.517 に答える