2017-02-07 20 views
0

何が欠けていますか? drawRectが予想通りに描画され、getTheImage()がviewcontollerから呼び出され、UIGraphicsGetImageFromCurrentImageContext()はnilを返します。多くのバリエーションを試しました。 何か助けていただければ幸いです。IOS Quartz2Dは現在のコンテキストからイメージを取得できません

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    UIGraphicsBeginImageContext(self.bounds.size); 
    CGContextSetLineWidth(context, 5.0); 
    CGContextSetStrokeColorWithColor(context, [[UIColor blackColor]CGColor]); 
    CGContextMoveToPoint(context,100.0,100.0); 
    CGContextAddLineToPoint(context,200.0,200.0); 
    CGContextMoveToPoint(context,200.0,200.0); 
    CGContextAddLineToPoint(context,200.0,400.0); 
    CGContextStrokePath(context); 
} 


-(UIImage *)getTheImage 
{ 
    UIImage *drawImage = UIGraphicsGetImageFromCurrentImageContext(); 
    NSLog(@"drawImage %@",drawImage); 
    return drawImage; 
} 

答えて

0

ビットマップベースのグラフィックスコンテキストは、現在のグラフィックスコンテキストである場合にのみ、あなたは、この関数を呼び出す必要があります。現在のコンテキストがnilであるか、またはUIGraphicsBeginImageContextの呼び出しによって作成されなかった場合、この関数はnilを返します。

あなたの呼び出しはコンテキスト内に存在しません。

0

これを試すことができますか?

-(UIImage *)getTheImage 
{ 
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale); 
    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES]; 
    UIImage *drawImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSLog(@"drawImage %@",drawImage); 
    return drawImage; 
} 
+0

あなたの応答をありがとう、まだ動作していないUIGraphicsBeginImageContextは1つの引数を取るだけです。 –

+0

UIGraphicsBeginImageContextをUIGraphicsBeginImageContextWithOptionsに変更しました。まだ行っていません。 –

+0

UIGraphicsBeginImageContextWithOptionsに関するごめんなさい。このgetTheImageメソッドをどこから呼び出すことができますか?私はビューコントローラのviewWillAppearメソッドとviewDidAppearメソッドからこのメソッドを呼び出し、両方の場所から画像がなくなることはありません。 しかし、私がこのメソッドをviewDidLoadから呼び出すと、イメージはゼロになります。 ビューが完全にロードされた後にのみ、getTheImageメソッドを呼び出す必要があります。 –

関連する問題