Mam viewController, który jest oczywiście podklasy UIViewController
o nazwie MapViewController
. W tym widokuController Używam GPS, aby uzyskać lokalizację użytkownika.setNeedsDisplay nie wypalanie DrawRect
Mam również widok o nazwie DrawCircle
. Ten widok jest podklasą UIView
.
Korzystanie z drawCircle Chciałbym móc w dowolnym momencie narysować na moim MapViewController. Ale nie jestem pewien, czy rozumiem koncepcję takiego działania. Wiem, że mój kod rysunkowy działa, użyłem go wcześniej. Ale nie wiem, jak narysować na MapViewController
przy użyciu DrawCircle
.
Z tego, co mi się wydaje, gdy dzwonię pod numer [myCustomView setNeedsDisplay]
, nie wywołuje on w moim widoku metody DrawRect
.
Oto kod: 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);
}
Również, jeśli oferuje to jakąkolwiek pomoc w moim procesie myślowym, oto moja scena StoryBoard.
Tam, gdzie niestandardową klasą viewcontrollers jest MapViewController, a niestandardową klasą widoków jest DrawCircle.
** EDYCJA: ** Chciałbym również wspomnieć, że w moim DrawCircle.m mam metody, które wywołuję z MapViewController.m i działają.
Również. Początkowo wywoływana jest metoda DrawRect, ale nie można ręcznie wywołać za pomocą setNeedsUpdate
. Podczas debugowania nie wprowadza nawet metody DrawRect.
Przy okazji, mam nadzieję, że moja odpowiedź poniżej pomoże, Twój komentarz na temat map i GPS sprawia, że zastanawiam się, jakiego rodzaju mapy używasz. Jeśli używasz 'MKMapView' i jeśli chcesz, aby ten widok był powiązany ze współrzędnymi długości/długości, istnieje wiele lepszych sposobów na osiągnięcie tego celu (np. Niestandardowa adnotacja lub nakładka' MKCircle'). Ale jeśli chcesz, aby to czerwone kółko unosiło się w przestrzeni, nie ruszając się, gdy użytkownik patrzy i przybliża mapę, twój widok niestandardowy jest w porządku. Tylko zależy od tego, co próbujesz zrobić. – Rob