サブビューが追加されたビューがあります。多くのサブビューを含むそのビューを単一の画像またはビューに変えたいと思います。
そんなことがあるものか?
ありがとう
[UIView snapshotViewAfterScreenUpdates:]
iOS7 では、新しい方法を使用できます。
古い OS をサポートするために、Core Graphics を使用して任意のビューを UIImage にレンダリングできます。スナップショットの UIView でこのカテゴリを使用します。
UView+Snapshot.h
:
#import <UIKit/UIKit.h>
@interface UIView (Snapshot)
- (UIImage *)snapshotImage;
@end
UView+Snapshot.m
:
#import "UIView+Snapshot.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIView (Snapshot)
- (UIImage *)snapshotImage
{
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
@end
QuartzCore フレームワークが必要なので、必ずプロジェクトに追加してください。
それを使用するには、ヘッダーをインポートして次のようにします。
UIImage *snapshot = [interestingView snapshotImage];
Core Graphics のレンダリング関数を使用してビューをコンテキストにレンダリングし、そのコンテキストの内容で画像を初期化することは実際に可能です。良いテクニックについては、この質問への回答を参照してください。