Ich habe eine generische Ansicht rausgeschmuggelt und sie an meine circleView.m angehängt. Ich zog dann einen runden Rect-Button über diese Ansicht und verband eine IBAction damit. Ab jetzt, wenn die Ansicht geladen wird, wird der Kreis automatisch auf den Bildschirm gezeichnet. Ich möchte nur den Kreis auf dem Bildschirm zeichnen, wenn die Taste mit drawRect oder einer anderen Zeichenmethode gedrückt wird. Hier ist mein Code:Wie kann ich eine IBAction in meinem Controller verwenden, um einen Kreis in meiner benutzerdefinierten Ansicht zu zeichnen?
drawCircleViewController.h
#import <UIKit/UIKit.h>
@interface drawCircleViewController : UIViewController
@end
drawCircleViewController.m
#import "drawCircleViewController.h"
#import "circleView.h"
@interface drawCircleViewController()
@property (nonatomic, weak) IBOutlet circleView *circleV;
@end
@implementation drawCircleViewController
@synthesize circleV = _circleV;
- (IBAction)buttonPressedToDrawCircle:(id)sender {
// This is action I want to use to draw the circle in my circleView.m
}
@end
circleView.h
#import <UIKit/UIKit.h>
@interface circleView : UIView
@end
circleView.m
#import "circleView.h"
@implementation circleView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawCircleAtPoint:(CGPoint)p
withRadius:(CGFloat)radius
inContext:(CGContextRef)context
{
UIGraphicsPushContext(context);
CGContextBeginPath(context);
CGContextAddArc(context, p.x, p.y, radius, 0, 2*M_PI, YES);
CGContextStrokePath(context);
UIGraphicsPopContext();
}
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGPoint midpoint;
midpoint.x = self.bounds.origin.x + self.bounds.size.width/2;
midpoint.y = self.bounds.origin.y + self.bounds.size.height/2;
#define DEFAULT_SCALE 0.90
CGFloat size = self.bounds.size.width/2;
if (self.bounds.size.height < self.bounds.size.width) size = self.bounds.size.height/2;
size *= DEFAULT_SCALE;
CGContextSetLineWidth(context, 5.0);
[[UIColor blueColor] setStroke];
[self drawCircleAtPoint:midpoint withRadius:size inContext:context];
}
@end
Vielleicht versuchen, den Code, den Sie verwendet haben, um den Kreis in der Ansicht an erster Stelle zu zeichnen (die, wo es automatisch den Kreis zeichnet) und verschieben Sie es in die IBAction-Methode? – David