Question

Je suis en train de mettre en œuvre un UIView personnalisé qui est essentiellement un menu à tarte (quelque chose comme un gâteau divisé en tranches).

Pour que je suis en train de dessiner un cercle et une série de lignes du centre, comme les rayons de la roue d'un graphique.

J'ai dessiné avec succès le cercle et je voudrais maintenant tracer les lignes divisant le cercle en tranches.

est ce que j'ai jusqu'à présent:

-(void)drawRect:(CGRect)rect{

     [[UIColor blackColor] setStroke];
     CGContextRef ctx = UIGraphicsGetCurrentContext();

    CGFloat minDim = (rect.size.width < rect.size.height) ? rect.size.width : rect.size.height;

    CGRect circleRect =  CGRectMake(0, rect.size.height/2-minDim/2, minDim, minDim); 

    CGContextAddEllipseInRect(ctx, circleRect);
    CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor yellowColor] CGColor]));
    CGContextFillPath(ctx);

    CGPoint start = CGPointMake(0, rect.size.height/2);
    CGPoint end = CGPointMake(rect.size.width, rect.size.height/2);

    for (int i = 0; i < MaxSlices(6); i++){

        CGFloat degrees = 1.0*i*(180/MaxSlices(6));
        CGAffineTransform rot = CGAffineTransformMakeRotation(degreesToRadians(degrees));

        UIBezierPath *path = [self pathFrom:start to:end];
        [path applyTransform:rot];

    }
 }   

- (UIBezierPath *) pathFrom:(CGPoint) start to:(CGPoint) end{

    UIBezierPath*    aPath = [UIBezierPath bezierPath];
    aPath.lineWidth = 5;
    [aPath moveToPoint:start];
    [aPath addLineToPoint:end];
    [aPath closePath];
    [aPath stroke];
    return aPath;
}

Le problème est que applyTransform sur le chemin ne semble pas faire quoi que ce soit. Le premier chemin gest dessiné correctement les et les suivantes ne sont pas affectés par la rotation. En fait ce que je vois est juste un chemin. Vérifiez la capture d'écran ici http://img837.imageshack.us/img837/9757/iossimulatorscreenshotf. PNG

Merci pour votre aide!

Était-ce utile?

La solution

Vous dessinez le chemin (avec stroke) avant de le transformer. Un chemin est juste une représentation mathématique. Il n'est pas la ligne « sur l'écran. » Vous ne pouvez pas déplacer ce que vous avez déjà dessiné en modifiant les données à ce sujet.

Il suffit de déplacer le [aPath stroke] sur pathFrom:to: et le mettre après la applyTransform:.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top