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