2011-01-17 5 views
0

私のUIViewのサブクラスでは、カスタム図面。元の図形は正常に動作します。つまり、viewDidLoadからトリガーされた場合や、画面を消去して再描画するスワイプまたはシェイクジェスチャーの場合です。終了まで非表示のカスタム図面

問題は、私はすでにそれが不規則に動作there--何の上にを描画しようとすると、通常見えないが、私はそれを配置した場所からオフセットが、私が押した場合は、その後それが表示されていますホームボタン。ホームボタンを押すと、ビューが消えるにつれて、私が描こうとしてきたものを垣間見ることができます。私がアプリを再起動すると、すべての図がそこにあります。何がありますか?ここで

は私が設定しています方法は次のとおりです。

- (void)drawRect:(CGRect)rect; { 
    cgRect = [[UIScreen mainScreen] bounds]; 
    cgSize = cgRect.size; 
     context = UIGraphicsGetCurrentContext(); 

    for (int i=0; i<(cgSize.width/spacing); i++) { 
     for (int j=0; j<(cgSize.height/spacing); j++) { 
      [self drawObjectAtPosX:i*spacing andY:j*spacing withId:i*(cgSize.height/spacing) + j]; 
     } 
    } 

は、特定のオブジェクトの上に目に見えないボタンがあります。それらが押されたときに、オブジェクトが別の色で再描画される。

-(void)buttonPressed:theButton { 
int which = [theButton tag]; 
if ([[objectArray objectAtIndex:which] shouldBeRedrawn]) { 
     [self redrawObjectforID:which]; 
    } 
} 

-(void)redrawObjectforID:(int)which { 
     myObject *chosenOne = [objectArray objectAtIndex:which]; 
     CGFloat m_x = chosenOne.x; 
     CGFloat m_y = chosenOne.y; 
     context = UIGraphicsGetCurrentContext(); 
     CGContextSetRGBStrokeColor(context, 205/255.0,173/255.0,0.0,1.0); // LINE color 
     CGContextSetRGBFillColor(context, 205/255.0,197/255.0,0.0,1.0); // FILL color 
     CGContextTranslateCTM(context, m_x, m_y); 
     CGContextRotateCTM(context, chosenOne.rotation); 
     for (int i=0; i<4; i++) { 
      [self drawObjectSegmentatX:m_x andY:m_y forID:which inContext:context]; // custom drawing stuff 
      CGContextRotateCTM(context, radians(90)); 
     } 
     CGContextRotateCTM(context, -chosenOne.rotation); 
     CGContextTranslateCTM(context, -m_x, -m_y); 
} 
+0

UPDATE: 'buttonPressed'からの描画は、Y軸上にも反映されているように見えます(一度表示されると自然に表示されます)。描画コンテキスト(y = 0はbottomを意味します)とビットマップコンテキスト(y = 0はtopを意味します)の間に何らかの種類のスイッチがありますか? – buildsucceeded

答えて

1

は自分自身に答えるが、ここで私が今日学んだことです:

すべてのカスタム描画はDrawRectにする必要があります。私が見ていたきらきらした振る舞いは、ビューが消滅したり元に戻ったりすることによって呼び出されたDrawRectの結果でした。移動して動作します。

カスタムの再描画の場所はまだオフですが、それは別の質問です。

関連する問題