iPad/iPhone アプリのスクリーンショットを撮り、それを「UIImageView A」の境界に制限するだけでなく、スクリーンショットに「UIImageView A」の上に配置されるコントロール (UIImageView または UILabels) を含めるにはどうすればよいですか? 標準ディスプレイと Retina ディスプレイを比較すると、めちゃくちゃになりますか?
前もって感謝します!
iPad/iPhone アプリのスクリーンショットを撮り、それを「UIImageView A」の境界に制限するだけでなく、スクリーンショットに「UIImageView A」の上に配置されるコントロール (UIImageView または UILabels) を含めるにはどうすればよいですか? 標準ディスプレイと Retina ディスプレイを比較すると、めちゃくちゃになりますか?
前もって感謝します!
もう 1 つのアイデアは、単純に昔ながらの方法でスクリーンショットを撮ることです。たとえば、この関連する質問の回答を参照してから、「A」UIView のフレーム rect にトリミングします。
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
}