Ho un viewController che è ovviamente una sottoclasse di UIViewController
denominata MapViewController
. In questa viewController uso il GPS per ottenere la posizione dell'utente.setNeedsDisplay non attiva DrawRect
Ho anche una vista chiamata DrawCircle
. Questa vista è una sottoclasse di UIView
.
Uso di drawCircle Mi piacerebbe poter disegnare in qualsiasi momento sul mio MapViewController. Ma non sono sicuro di capire il concetto di farlo. So che il mio codice di disegno funziona, l'ho usato prima. Ma non so come disegnare su MapViewController
utilizzando DrawCircle
.
Da quello che sembra al mio quando chiamo [myCustomView setNeedsDisplay]
, non chiama il metodo DrawRect
nella mia vista.
Ecco il codice: MapViewController.h
#import "DrawCircle.h"
@interface MapViewController: UIViewController <CLLocationManagerDelegate>{
DrawCircle *circleView;
}
@property (nonatomic, retain) DrawCircle *circleView;
@end
MapViewController.m
#import "DrawCircle.h"
@interface MapViewController()
@end
@implementation MapViewController
@synthesize circleView;
- (void) viewDidLoad
{
circleView = [[DrawCircle alloc] init];
[self setNeedsDisplay];
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
DrawCircle.m
#import "DrawCircle.h"
@interface DrawCircle()
@end
@implementation DrawCircle
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self) {
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint point = CGPointMake(40, 137);
CGContextAddEllipseInRect(ctx, CGRectMake(point.x, point.y, 10, 10));
}
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor redColor] CGColor]));
CGContextFillPath(ctx);
}
Anche se questo offre qualche aiuto nel mio processo di pensiero, ecco la mia scena StoryBoard.
Dove la classe personalizzata viewcontrollers è MapViewController e la classe personalizzata views è DrawCircle.
** MODIFICA: ** Vorrei anche ricordare che, nel mio DrawCircle.m, ho metodi che sto chiamando da MapViewController.m e funzionano.
Inoltre. Inizialmente, viene chiamato il metodo DrawRect, ma non sono in grado di chiamare manualmente utilizzando setNeedsUpdate
. Durante il debug, non sta nemmeno entrando nel metodo DrawRect.
A proposito, mentre spero che la mia risposta qui sotto aiuti, il tuo commento su mappe e GPS mi fa chiedere che tipo di mappa stai usando. Se stai usando 'MKMapView' e se vuoi che questa vista sia associata a coordinate lat/long, ci sono molti modi migliori per ottenerlo (ad esempio annotazione personalizzata o sovrapposizione di' MKCircle'). Ma se vuoi che questo cerchio rosso galleggi nello spazio, non si muova mentre l'utente esegue il panning e lo zoom della mappa, quindi la visualizzazione personalizzata va bene. Dipende solo da cosa stai cercando di fare. – Rob