2

を に描画しようとしUIViewていUIImageます。私が使用しているコードは次のとおりです。

UIGraphicsBeginImageContextWithOptions(myView.bounds.size, YES, 0.f);
[myView.layer drawInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

myView.bounds.size有効であることを確認しました。myView画面に正しく表示されます。ただし、img完全に黒です(両方で表示しUIImageViewて、JPEG表現をファイルに書き込もうとしました。)画像の寸法は正しく、カラースペース(JPEGファイル出力)はRGBで、カラープロファイルはsRGBなどです.破損した画像を扱っていないことを意味します (画像/ビットマップ データ自体が有効であるという意味で)。6.0 シミュレーター、7.0 シミュレーター、および 7.0.6 デバイスの両方でケースをテストしましたが、すべて同じです。masksToBoundsレイヤーにはサブレイヤーがなく、何も変更さNOれなかったに設定しようとしました。

ビューのレイヤーが描画されない原因は何ですか?

4

2 に答える 2

1

update : Rob Jones のコメントによると、これらの API は画像ではなく UIView を返します。

iOS 7 には有望な新しい API があります。

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);
- (UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(7_0);  // Resizable snapshots will default to stretching the center
- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);

UIView (UISnapshotting)でカテゴリーをチェックUIView.h

于 2014-03-09T19:23:41.623 に答える