tirer pour rafraîchir l'animation comme le courrier dans iOS6

Je suis un développeur iOS et récemment j'ai installé le nouveau iOS 6 sur les tests. Comme je suis venu à travers avec mail tirer pour rafraîchir l'animation, j'ai décidé d'essayer de l'appliquer sur mon propre. J'ai essayé d'utiliser CAShapeLayer avec UIBezierPath pour créer la même forme ovale qui peut être déplacé vers l'avant vers le bas. Et afin d'obtenir vers le bas la partie tendus vers le bas, j'ai essayé d'utiliser l'ajout de la courbe avec deux points de contrôle et appliquée CABasicAnimation. Mais malheureusement, le résultat n'est pas que je m'attendais. Depuis le étiré lignes d'obtenir un peu de forme ovale à l'intérieur. Je suppose que l'ovale de l'animation est de faire quelque chose avec d'autres classes. Je serais très reconnaissante si quelqu'un pouvait me conduire à certaines idées ici.
Merci beaucoup

- (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"];
}
Vous êtes sur la bonne voie. CAShapeLayer et UIBezierPath est le chemin à parcourir. Il suffit de garder à l'esprit que si vous allez animer le chemin qu'ils ont besoin du même nombre de points, sinon les regards de l'animation n'est pas défini. Il suffit de garder à elle et affiner jusqu'à ce qu'il regarde la façon dont vous voulez qu'il fasse.
vous pouvez avoir un coup d'oeil à github.com/xpepermint/iOS-UIPullerView et github.com/enormego/EGOTableViewPullRefresh
Merci beaucoup de l'homme :). J'ai vérifié les sources avant et j'ai eu l'idée de la UIGestureRecognizer. Le seul problème est que cette animation qui reflète un peu la goutte de liquide. Oui, j'ai une méthode qui crée toujours des nouvelles cercle avec plus de hauteur et de points de la courbe, mais le problème est que la courbe ne fait pas de l'étiré chemin peu ovale à l'intérieur. Je pourrais poster le code pour que, si cela pouvait m'aider à mener. Merci beaucoup de l'homme. J'ai pensé à la mise en œuvre de ce et de le mettre sur GitHub. j'utilise CABasicAnimation fromValue, toValue. les chemins ont le même nombre de points que je suppose.
J'ai réglé le problème et j'ai vraiment belle animation après un long et dur travail, Il a été tout simplement lisse de calcul à appliquer pour CAShapeLayer chemin de Dessin à travers le changement de UIScrollView de l'Axe y. Pour ceux qui se demandent encore, Vous avez certainement utiliser le CAShapeLayer avec deux Arcs, mais de commencer à dessiner, sans déplacer les points. En fin de compte, vous obtiendrez Cercle avec topArc, BottomArc, deux lignes qui, de tous les deux ont deux points de la courbe.
Les gens Qui sont intéressés par cette solution, je suis sur le point de le mettre sur github. J'ai créé une classe générale où l'on peut facilement customze certains paramètres d'affichage. Je le mettrai dès que possible.

OriginalL'auteur Bahonur Nasritdinov | 2012-07-15