pull to refresh animation wie E-mail in iOS6

Ich bin ein iOS-Entwickler und vor kurzem bekam ich installierte die neueste iOS 6 testen. Wie kam ich auf mit E-mail pull to refresh animation habe ich beschlossen, zu versuchen, es auf meinem eigenen. Ich habe versucht, zu verwenden CAShapeLayer mit UIBezierPath zu erstellen, die die gleiche Ovale Form gezogen werden kann, nach vorne, nach unten. Und um den unteren Teil gestreckt nach unten ich habe versucht zu verwenden, das hinzufügen Kurve mit zwei Kontrollpunkten und angewendet CABasicAnimation. Aber leider ist das Ergebnis nicht so ist wie ich es erwartet habe. Da die gestreckten Linien ein wenig oval innen. Ich nehme das oval mit animation zu tun hat, etwas mit anderen Klassen. Ich wäre sehr dankbar, wenn jemand könnte mich führen zu einigen Ideen hier.
Vielen Dank

- (UIBezierPath *)createCircleForRect:(CGRect)bRect
{
    UIBezierPath *circle = [UIBezierPath bezierPath];

    CGFloat rectWidth = bRect.size.width;
    CGFloat rectHeight = bRect.size.height;

    minSize = MIN(rectWidth, rectHeight);

    //center = CGPointMake(minSize/2.0f, minSize/2.0f);

    CGFloat radius = minSize/2.0f - 5.0f;
    startPointOffset = center.x - radius;

    if(startPointOffset == 5.0f)
        testVal = 0;
    else 
        testVal += startPointOffset;

    NSLog(@"startPointOffset =>> %f", startPointOffset);
    NSLog(@"radius =>> %f", radius);

    NSLog(@"after center =>> %f, %f", center.x, center.y);

    [circle addArcWithCenter:center radius:radius startAngle:DEGREES_TO_RADIANS(0) endAngle:DEGREES_TO_RADIANS(180) clockwise:NO];

    [circle moveToPoint:CGPointMake(startPointOffset, center.y)];

    [circle addCurveToPoint:CGPointMake(center.x + radius, center.y) controlPoint1:CGPointMake(center.x - radius, rectHeight + 10.0f) controlPoint2:CGPointMake(center.x + radius, rectHeight + 10.0f)];

    [circle closePath];
    return circle;
}

-(void)startAnimation
{   
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];

    animation.duration = 1.0;

    animation.repeatCount = HUGE_VALF;

    animation.autoreverses = YES;

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    animation.fromValue = (id)roundBPath;

    CGRect smallerRect = self.frame;

    smallerRect.size.height += 50;
    smallerRect.size.width -= 80;


    UIBezierPath *newRound = [self createCircleForRect:smallerRect];


    animation.toValue = (id)(newRound.CGPath);


    [shapeLayer addAnimation:animation forKey:@"animatePath"];
}
  • Sie sind auf der richtigen Spur. CAShapeLayer und UIBezierPath ist der Weg zu gehen. Nur im Kopf behalten, dass, wenn Sie gehen zu animieren, den Weg, den Sie müssen die gleiche Anzahl von Punkten, ansonsten ist das Aussehen und die animation ist nicht definiert. Nur halten Sie es und optimieren Sie, bis Sie aussieht, wie Sie wollen, es zu tun.
  • Sie können einen Blick auf github.com/xpepermint/iOS-UIPullerView und github.com/enormego/EGOTableViewPullRefresh
  • Vielen Dank man :). Ich habe in den Quellen vor und ich bekam die Idee über die UIGestureRecognizer. Das problem ist nur, diese animation, die ein bisschen spiegelt sich der Flüssigkeitstropfen. Ja, ich habe eine Methode, erzeugt immer neuen Kreis mit mehr Höhe und Kurve Punkte, aber das problem ist die Krümmung nicht in die gestreckt Pfad wenig oval innen. Ich könnte den code für Sie, dass, wenn mir helfen könnte, zu führen. Vielen Dank, Mann. Ich dachte, implementieren diese und setzen es in GitHub. ich benutze CABasicAnimation fromValue, toValue. Pfade haben die gleiche Anzahl an Punkten haben, nehme ich an.
  • Ich gesetzt haben das problem und ich habe wirklich schöne animation, nach einem langen harten Arbeit, Es war einfach nur glatt-Berechnung angewendet werden, um CAShapeLayer Pfad Zeichnen sich durch die änderung von UIScrollView Y-Achse. Für diejenigen, die Frage mich noch immer, Sie auf jeden Fall nutzen die CAShapeLayer mit zwei Bögen, aber beginnen Zeichnung ohne verschieben der Punkte. Am Ende erhalten Sie einen Kreis mit topArc, BottomArc, zwei Linien, die beiden haben zwei kurvenpunkte.
  • Menschen, Die Interesse an dieser Lösung haben, ich bin über, um es in github. Habe ich eine Allgemeine Klasse, wo jemand kann leicht customze einige Parameter ansehen. Ich werde es so bald wie möglich.
  • Ich freue mich auf Ihre Lösung haben, setzen Sie es in github?
  • Ich würde gerne sehen ihn in github als auch..

Schreibe einen Kommentar