これまで同様の問題がありました。次は、回避策として、あなたのために働くかもしれない:それはブラー、およびいくつかのコア・アニメーション機能を除外することができるようあなたは、画面キャプチャで、いくつかの精度を失う可能性が
UIGraphicsBeginImageContextWithOptions(editingView.bounds.size, NO, 0.0);
[editingView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
注意を。
編集:
renderInContext
とdrawViewHierarchyInRect
両方の問題/トレードオフがあるようです。
- (CGContextRef) createBitmapContextOfSize:(CGSize) size {
CGContextRef context = NULL;
CGColorSpaceRef colorSpace;
int bitmapByteCount;
int bitmapBytesPerRow;
bitmapBytesPerRow = (size.width * 4);
bitmapByteCount = (bitmapBytesPerRow * size.height);
colorSpace = CGColorSpaceCreateDeviceRGB();
if (bitmapData != NULL) {
free(bitmapData);
}
bitmapData = malloc(bitmapByteCount);
if (bitmapData == NULL) {
fprintf (stderr, "Memory not allocated!");
return NULL;
}
context = CGBitmapContextCreate (bitmapData,
size.width,
size.height,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaNoneSkipFirst);
CGContextSetAllowsAntialiasing(context,NO);
if (context== NULL) {
free (bitmapData);
fprintf (stderr, "Context not created!");
return NULL;
}
CGColorSpaceRelease(colorSpace);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, size.height);
CGContextConcatCTM(context, flipVertical);
return context;
}
次に、あなたが行うことができます:次のコードは、(参考のためにhereから取られた)試してみる価値があるかもしれ
CGContextRef context = [self createBitmapContextOfSize:editingView.bounds.size];
[editingView.layer renderInContext:context];
CGImageRef cgImage = CGBitmapContextCreateImage(context);
UIImage* background = [UIImage imageWithCGImage: cgImage];
CGImageRelease(cgImage);
こんにちはアランプール、私はこれを試してみました。私はUIViewと一緒にCAEmitterLayerのスナップショットを取得することに失敗しました。このために私は何かを見つけました。関連するコアアニメーションは、クイックアイデアのためにこのリンクを参照できますか?http://stackoverflow.com/questions/11926690/caemitterlayer-not-rendering-when-renderincontext-of-superlayer-is-called。これに関して私を助けてください。そして、私が提供したgifリンクを通してください。 –
両方の解決策で問題/トレードオフがあるようです。私は可能な選択肢で私の答えを更新しました。コードはかなり古い記事のものなので、うまく動作しないかもしれません。 –
me.missingで動作しませんCAEmitterLayer –