Как я могу использовать IBAction из моего контроллера, чтобы нарисовать круг в моем собственном представлении? - PullRequest
0 голосов
/ 28 марта 2012

Я вытащил общий вид и подключил его к своему circleView.m.Затем я вытащил круглую прямоугольную кнопку поверх этого вида и подключил к ней IBAction.На данный момент, когда вид загружается, круг автоматически выводится на экран.То, что я хотел бы сделать, это нарисовать круг на экране, только когда кнопка нажата с использованием drawRect или каким-либо другим методом рисования.Вот мой код:

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 Ответ

2 голосов
/ 28 марта 2012

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

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

...