美文网首页程序员iOS Developer
高仿QQ红点消除动画

高仿QQ红点消除动画

作者: 有毒的程序猿 | 来源:发表于2017-02-04 17:44 被阅读153次

    前言

    一直觉得qq的红点动画比较叼,今天研究了一下,主要是绘制不规则图形和左右晃动动画,希望可以帮到你们.

    王姐威武霸气.jpg
    一下是效果展示
    
    2BDEF402-CC52-4704-A218-4C6FE648AA9F.png CD8E492F-6EC8-4F7A-9FCF-202F6E834304.png

    废话不多说上代码

    #pragma mark - 用于计算不规则路径
    - (UIBezierPath *)pathWithBigCirCleView:(UIView *)bigCirCleView  smallCirCleView:(UIView *)smallCirCleView
    {
        CGPoint bigCenter = bigCirCleView.center;
        CGFloat x2 = bigCenter.x;
        CGFloat y2 = bigCenter.y;
        CGFloat r2 = bigCirCleView.bounds.size.width / 2;
        
        CGPoint smallCenter = smallCirCleView.center;
        CGFloat x1 = smallCenter.x;
        CGFloat y1 = smallCenter.y;
        CGFloat r1 = smallCirCleView.bounds.size.width / 2;
        
        // 获取圆心距离
        CGFloat d = [self pointToPoitnDistanceWithPoint:self.samllCircleView.center potintB:self.center];
        CGFloat sinθ = (x2 - x1) / d;
        CGFloat cosθ = (y2 - y1) / d;
        
        // 坐标系基于父控件
        CGPoint pointA = CGPointMake(x1 - r1 * cosθ , y1 + r1 * sinθ);
        CGPoint pointB = CGPointMake(x1 + r1 * cosθ , y1 - r1 * sinθ);
        CGPoint pointC = CGPointMake(x2 + r2 * cosθ , y2 - r2 * sinθ);
        CGPoint pointD = CGPointMake(x2 - r2 * cosθ , y2 + r2 * sinθ);
        CGPoint pointO = CGPointMake(pointA.x + d / 2 * sinθ , pointA.y + d / 2 * cosθ);
        CGPoint pointP = CGPointMake(pointB.x + d / 2 * sinθ , pointB.y + d / 2 * cosθ);
        
        UIBezierPath *path = [UIBezierPath bezierPath];
        // A
        [path moveToPoint:pointA];
        // AB
        [path addLineToPoint:pointB];
        // 绘制BC曲线
        [path addQuadCurveToPoint:pointC controlPoint:pointP];
        // CD
        [path addLineToPoint:pointD];
        // 绘制DA曲线
        [path addQuadCurveToPoint:pointA controlPoint:pointO];
        
        return path;
    }
    

    Demo下载地址:https://github.com/yuhechuan/UITabBar-qqDemo

    相关文章

      网友评论

        本文标题:高仿QQ红点消除动画

        本文链接:https://www.haomeiwen.com/subject/zlfsittx.html