2013-01-10 25 views
0

我是objective-c的新手,並且試圖在Objective-c中的可移動圓圈之間畫一條線。我已經有生成圈子的代碼。這是我想在我的應用程序中創建的圖像。在objective-c(iPad)中的兩個可移動圓圈之間畫線

http://images.sciencedaily.com/2004/04/040407083832.jpg

這裏是我的代碼。

CircleViewController.m

- (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    for (int i=0; i<5; i++) { 

    CGRect circleFrame = CGRectMake(arc4random() % 500, arc4random() % 500, (arc4random() % 200)+50 , (arc4random() % 200)+50); 
    CircleView *cirleView = [[CircleView alloc] initWithFrame: circleFrame]; 
    cirleView.backgroundColor = [UIColor clearColor]; 

    CGFloat hue = (arc4random() % 256/256.0); // 0.0 to 1.0 
    CGFloat saturation = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from white 
    CGFloat brightness = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from black 
    UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; 
    cirleView.circleColor = color; 
    [self.view addSubview:cirleView]; 
} 

}

CircleView.m

-(void) drawCircle:(CGPoint)p withRadius:(CGFloat)radius inContext:(CGContextRef)contex 
    { 
     UIGraphicsPushContext(contex); 
     CGContextBeginPath(contex); 
     CGContextAddArc(contex, p.x, p.y, radius, 0, 2*M_PI, YES); 
     CGContextSetLineWidth(contex, 2.0); 
     CGContextAddLineToPoint(contex, p.x, p.y); 
     CGContextDrawPath(contex, kCGPathFillStroke); 
     UIGraphicsPopContext(); 
    } 

    - (void)drawRect:(CGRect)rect 
    { 

     CGFloat size = self.bounds.size.width/2; 
     if(self.bounds.size.height < self.bounds.size.width) size = self.bounds.size.height/2; 

     size *= 0.90; 
     CGContextRef context = UIGraphicsGetCurrentContext(); 
     CGContextSetLineWidth(context, 5.0); 

     [_circleColor setStroke]; 
     [_circleColor setFill];  
     CGPoint point1; 
     point1.x = self.bounds.origin.x + self.bounds.size.width/2; 
     point1.y = self.bounds.origin.y + self.bounds.size.height/2; 

     [self drawCircle:point1 withRadius:size inContext:context]; 

     UITapGestureRecognizer *singleFingerTap = 
     [[UITapGestureRecognizer alloc] initWithTarget:self 
             action:@selector(handleSingleTap:)]; 
     [self addGestureRecognizer:singleFingerTap]; 
    } 

謝謝您的幫助。

回答

0

畫線:

-(void) drawLine (CGRect circleViewRect1, CGRect circleViewRect2) 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 

    //line width 
    CGContextSetLineWidth(context, 1.0); 

    CGContextMoveToPoint(context, circleViewRect1.center.x + circleViewRect1.bounds.width/2,circleViewRect1.center.y + circleViewRect1.bounds.height/2); //start from first circle radius 

    CGContextAddLineToPoint(context, circleViewRect2.center.x + circleViewRect2.bounds.width/2,circleViewRect2.center.y + circleViewRect2.bounds.height/2); //draw to this point 

    // and now draw the Path! 
    CGContextStrokePath(context); 
} 

注意:這隻有在有用的兩個圓弧的中心落在水平線。另外,假設circleViewRect1位於circleViewRect2的左側。你必須弄清楚其他用例的價值,也就是說,如果它們處於不同的角度等等。

+0

謝謝你花時間給我一個想法。 –