2012-03-28 5 views
-1

Я снял общий вид и подключил его к моему кругу. Затем я вытащил круглую прямоугольную кнопку над этой точкой зрения и подключил к ней 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 
+1

Возможно, попробуйте взять код, который вы использовали для рисования круга на вид в первую очередь (тот, где он автоматически рисует круг) и переместить его в метод IBAction? – David

ответ

2

С тем, что у вас там, самый простой подход, вероятно, заключался бы в том, чтобы скрывать ваш круг и показывать его при нажатии кнопки.

В противном случае вы можете сохранить BOOL в своем представлении, чтобы указать, была ли кнопка нажата, и проверить, что во время drawRect: (и используйте setNeedsDisplay для запуска изменений).