snapshotViewAfterScreenUpdates
で作成されたUIViewからUIImageを取得することはできますか?UIImageからsnapshotViewAfterScreenUpdatesで作成されたUIView:
snapshotViewAfterScreenUpdates
から返さ
サブビューとして追加する場合罰金に見えますが、以下は黒画像を生成します。
UIView *snapshotView = [someView snapshotViewAfterScreenUpdates:YES];
UIImage *snapshotImage = [self imageFromView:snapshotView];
- (UIImage *)imageFromView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
// [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- same result...
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
snapshotViewAfterScreenUpdates
に頼らずに画像を取得することはもちろん可能である:
UIImage *snapshotImage = [self imageFromView:someView];
残念ながら、複雑なビューをキャプチャする場合、の速度に一致することはできません。drawViewHierarchyInRect
私はsnapshotViewAfterScreenUpdates
によって作成されたビューからUIImage
を取得する方が速いことを望んでいました、これは可能ですか?
私は、これが機能していない理由は、スナップショットによって返されたビューが実際に完全なビューではないということです。デバッガをステップ実行すると、そのタイプが '_UIReplicantView'であることがわかります。これは、私がそれが他のビューの最適化されたコピーであり、 '完全な' UIViewの同じ 'レイヤー'特性を持っていないと思うようになります... – MobileVet
ありがとう@MobileVet、それは知っておきたいことです。すばらしいスクリーンキャプチャのすべての機能であるピクセルからピクセルを取得する方法がないということにはまだ不満が残っています。 – carton
Appleはこれが不可能であることを確認します。参照してください:http://www.raywenderlich.com/forums/viewtopic.php?f=37&t=8993&start=10 –