2010-05-07 5 views
0

J'essaie de comprendre ce que je fais mal mais je ne comprends pas. Voici ce que je veux faire:Comment déplacer un cercle dessiné dans une sous-classe de UIView en écrasant la méthode "drawRect"?

Je veux dessiner un cercle quelque part sur l'écran de l'iPhone et ensuite je veux que le cercle soit toujours affiché à la position où l'utilisateur appuie actuellement sur l'écran. j'ai commencé en créant une sous-classe de UIView et en ajoutant les lignes dans la méthode « drawRect » suivantes:

- (void)drawRect:(CGRect)rect { 

//Create the main view! 

CGContextRef mainscreen = UIGraphicsGetCurrentContext(); 

//Draw the dot 
//will be a circle cause rectangle is a square 
CGRect dotRect = CGRectMake(50, 80, 100, 100); 
[[UIColor blueColor] set]; 
CGContextStrokeEllipseInRect(mainscreen, dotRect); 
CGContextFillEllipseInRect(mainscreen, dotRect); 

} 

Le semble très bien, mais maintenant je ne sais pas comment le faire se déplacer sur l'écran que j'ai essayé plusieurs choses et rien n'a fonctionné.

Répondre

1

Pour dessiner le point dans un emplacement différent, modifiez l'origine de dotRect. Pour savoir où le dessiner, implémentez -touchesBegan:withEvent: et -touchesMoved:withEvent: et enregistrez l'emplacement où se produisent les contacts.

+1

et appelez setNeedsDisplay à chaque fois que vous modifiez l'origine. – drawnonward

+0

oui mais où exactement je mets le code? parce que pour l'instant j'ai juste mis en application les trois méthodes thouchBegan, touchEnded etc. dans la sous-classe UIview et puis j'ai placé le code dans la classe viewControler pour faire des boutons certaines actions changent le texte etc. d'étiquette. créé dans l'interface bulider. Je ne sais pas vraiment comment accéder au cercle à travers le contrôleur de vue, car ce n'est pas vraiment un objet créé par le constructeur d'interface!? –

+0

bien maintenant j'ai mis en œuvre ce qui suit: - (void) touchesBegan: (NSSet *) touche avecEvent: événement (UIEvent *) { \t UITouch * touch = [touche anyObject]; \t center1 = [toucher emplacementInview: auto]; \t [self setNeedsDisplay]; } mais ça ne marche toujours pas ...... –

Questions connexes