Я снял общий вид и подключил его к моему кругу. Затем я вытащил круглую прямоугольную кнопку над этой точкой зрения и подключил к ней IBAction. На данный момент, когда изображение загружается, кружок автоматически рисуется на экране. То, что я хотел бы сделать, это нарисовать круг на экране только при нажатии кнопки с помощью метода drawRect или другого метода рисования. Вот мой код:Как я могу использовать IBAction внутри моего контроллера, чтобы нарисовать круг в моем пользовательском представлении?
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
Возможно, попробуйте взять код, который вы использовали для рисования круга на вид в первую очередь (тот, где он автоматически рисует круг) и переместить его в метод IBAction? – David