2010-08-28 4 views
1

Je suis en train de tracer une ligneDessiner une ligne dans Vue: Non Dessin

mon code est ce

-(void) drawRect:(CGRect) rect 
{ 
    NSLog(@"Reached Draw ARect Function"); 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(ctx, 2.0); 
    CGContextSetRGBStrokeColor(ctx, 1.0, 2.0, 0, 1); 
    CGContextMoveToPoint(ctx, 0, 0); 
    CGContextAddLineToPoint(ctx, 100,100); 

    CGContextStrokePath(ctx); 

} 

et je fais appel du viewDidLoad comme suit

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    CGRect k = CGRectMake(1.0, 1.0, 100.0, 200.0); 
    [self.view drawRect:k]; 

} 

Peut- un m'aider s'il vous plaît?

Répondre

3

Vous devez sous-classe un UIView et déplacez votre code de dessin en ligne à la méthode drawRect:, comme vous faites (juste en espérant qu'il est pour une sous-classe UIView et non le UIViewController)

- (void)drawRect:(CGRect)rect { 

    [super drawRect:rect]; 

    // Place your code here 

} 

Vous devez également vous assurer que vous utilisez la sous-classe UIView dans InterfaceBuilder pour la vue dans laquelle vous allez dessiner. Vous ne devriez pas avoir à appeler cette méthode vous-même. Si vous voulez animer quelque chose, vous devez appeler le [view setNeedsDisplay]; pour demander un redessin de la vue.



... et ... vous devriez ajouter CGContextBeginPath(ctx); juste avant que vous appelez CGContextMoveToPoint

+0

im sous-classe UIViewController, comment puis-je le changer en UIView. ou comment dessiner dans une classe qui avait hérité UIViewController [ATTENDRE POUR LA RÉPONSE] –

+0

J'ai fait un petit exemple ici http://memention.com/SubclassedView.zip Voir les fichiers SubclassView.h et .m – epatel

+0

Merci pour le code source et votre temps. je répondrai après l'avoir vérifié. –

0

Vous ne pouvez pas appeler directement drawRect. Au lieu de cela, vous appelez setNeedsDisplay sur votre UIView, revenez, et attendez que le système d'exploitation appelle le drawRect de UIView avec un contexte approprié à un moment ultérieur.

+0

veuillez expliquer cette réponse –

0

S'il est nécessaire d'appeler

- (void)drawRect:(CGRect)rect 
méthode

dynamique tout utilisateur fait glisser une vue particulière, il suffit de placer le code suivant:

[self.view setNeedsDisplay]; 

puis

- (void)drawRect:(CGRect)rect 

méthode sera automatiquement appelé

Questions connexes