2012-02-18 2 views
1

Я пытаюсь нарисовать круг после нажатия кнопки. Я могу создать прямоугольник, но не могу нарисовать круг.Рисование круга после нажатия кнопки в xcode

Есть ли способ сделать это:

-(IBAction) buttonTouched 
{ 
} 

вызова или сигнала, чтобы это работало:

- (void)drawRect:(CGRect)rect 
{ 
} 

Спасибо за любой вклад!

* Редактировать * * К сожалению, это не работает. Не уверен, что я делаю неправильно:

1) Создал новый проект на основе представления под названием «тест». 2) Создал Objective-C класс UIView с именем «view». 3) В IB перетащил кнопку на вид, связав ее с «buttonTouched» - Touched Up Inside.

testViewController.h 
#import <UIKit/UIKit.h> 
#import "view.h" 
@interface testViewController : UIViewController { 
} 
-(IBAction) buttonTouched; 
@end 


testViewController.m 
#import "testViewController.h" 
#import "view.h" 
@implementation testViewController 
- (IBAction)buttonTouched { 
    [[self view] setNeedsDisplay]; 
} 

view.m 

#import "view.h" 

@implementation view 

- (id)initWithFrame:(CGRect)frame {  
    self = [super initWithFrame:frame]; 
    if (self) { 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    CGContextRef contextRef = UIGraphicsGetCurrentContext(); 

    CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 
    CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1.0); 

    CGContextStrokeEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 
    CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1.0); 
} 


- (void)dealloc { 
    [super dealloc]; 
} 

@end 
+0

Что вы пробовали? Покажите нам код, который создает прямоугольник. Покажите нам код, который пытается создать круг. –

ответ

6

Это должно делать то, что вы хотите. Проверить Sample code

 // The color is by this line CGContextSetRGBFillColor(context , red , green , blue , alpha); 


    // Draw a circle (filled) 
    CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 
    CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1.0); 

    // Draw a circle (border only) 
    CGContextStrokeEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 
    CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1.0); 
+0

Когда вы говорите подкласс UIView, это тот, который создается щелчком правой кнопкой мыши по классам-new file-> object-c class-UIView? – user1217340

+0

Да, это цель-c class-UIView. – BDGapps

+0

Я написал короткий проект для вашего, который легко поддается наблюдению. http://www.mediafire.com/?d9hkhmuj32vlrlv – BDGapps

1

Если вы хотите, чтобы система позвонить drawRect:, вы звоните setNeedsDisplay:

// In your view controller... 
- (IBAction)buttonTouched { 
    [self.view setNeedsDisplay]; 
} 

// In your UIView subclass... 
- (void)drawRect:(CGRect)rect { 
    [UIColor.redColor setFill]; 
    [[UIBezierPath bezierPathWithOvalInRect:self.bounds] fill]; 
} 
0
-(void)drawRect:(CGRect)rect { 
    CGContextRef contextRef = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(contextRef, 0, 0, 255, 0.1); 
    CGContextSetRGBStrokeColor(contextRef, 0, 0, 255, 0.5); 
    // Draw a circle (filled) 
    CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 

    // Draw a circle (border only) 
    CGContextStrokeEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25)); 

    // Get the graphics context and clear it 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(ctx, rect); 

    // Draw a green solid circle 
    CGContextSetRGBFillColor(ctx, 0, 255, 0, 1); 
    CGContextFillEllipseInRect(ctx, CGRectMake(100, 100, 25, 25)); 

    // Draw a yellow hollow rectangle 
    CGContextSetRGBStrokeColor(ctx, 255, 255, 0, 1); 
    CGContextStrokeRect(ctx, CGRectMake(195, 195, 60, 60)); 

    // Draw a purple triangle with using lines 
    CGContextSetRGBStrokeColor(ctx, 255, 0, 255, 1); 
    CGPoint points[6] = { 
     CGPointMake(100, 200), CGPointMake(150, 250), 
     CGPointMake(150, 250), CGPointMake(50, 250), 
     CGPointMake(50, 250), CGPointMake(100, 200) 
    }; 
    CGContextStrokeLineSegments(ctx, points, 6); 
} 
Смежные вопросы