2011-08-24 8 views
19

UIViewUIImageに変換するこのメソッドを使用しています。ビューのすなわち、画面のスナップショット -UIImageとしてUIViewを取得

@interface UIView(Extended) 

- (UIImage *) imageByRenderingView; 

@end 


@implementation UIView(Extended) 


- (UIImage *)imageByRenderingView 
{ 
    UIGraphicsBeginImageContext(self.bounds.size); 
    [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return resultingImage; 
} 

@end 

それを使用するには、私はこれを行う -

UIImage *currImage = [self.view imageByRenderingView];

これは全体UIViewの画像表現を提供します。今度は2つの画像が必要です.1つはUIViewの上半分で、もう1つは下半分です。それ、どうやったら出来るの?

+0

注:'かなり高価になることができます。私は 'cellForRowAtIndexPath:'(これは現在、別のオプションを持たない)でやっています。これは明らかに遅れを意味します。 –

答えて

11

あなたはこのコードを使用して、2つのあなたUIImageを分割することができます(私の経験から) `renderInContextその

CGImageRef topOfImageCG = 
     CGImageCreateWithImageInRect(currImage.CGImage, 
             CGRectMake(0, 
               0, 
               currImage.size.width, 
               currImage.size.height/2.0)); 

UIImage *topOfImage = [UIImage imageWithCGImage:topOfImageCG]; 

CGImageRelease(topOfImageCG); 
+0

しかし、このセレクタは 'CGImageRef CGImageCreateWithImageInRect(CGImageRefイメージ、CGRect rect);'をとります。私は 'CGImageRef'に' UIImage'を変換するには? –

+0

Git It! image.CGImageここで画像はUIImageオブジェクトです。 –

+0

あなたは正しいです、サンプルを更新しました。 – pgb

関連する問題