登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

Swift UIViewXXYBoom 好玩的动画效果

[复制链接]
来自: 李世铿 分类: iOS精品源码 上传时间: 2016-5-25 10:33:37
Tag:动画 animation UIView 爆炸

项目介绍:

文:xxycode
一个好玩的效果,Swift 2.0,写成了UIView的扩展,‘

主要代码:
[Objective-C] 查看源文件 复制代码
//随机产生震动值
    private func makeShakeValue(p:CGFloat) -> CGFloat{
        let basicOrigin = -CGFloat(10)
        let maxOffset = -2 * basicOrigin
        return basicOrigin + maxOffset * (CGFloat(random()%101)/CGFloat(100)) + p
    }
    
    //随机产生缩放数值
    private func makeScaleValue() -> CGFloat{
        return 1 - 0.7 * (CGFloat(random()%101 - 50)/CGFloat(50))
    }
    
    //随机产生粒子路径
    private func makeRandomPath(aLayer:CALayer) -> UIBezierPath{
        let particlePath = UIBezierPath()
        particlePath.moveToPoint(layer.position)
        let basicLeft = -CGFloat(1.3 * layer.frame.size.width)
        let maxOffset = 2 * abs(basicLeft)
        let randomNumber = random()%101
        let endPointX = basicLeft + maxOffset * (CGFloat(randomNumber)/CGFloat(100)) + aLayer.position.x
        let controlPointOffSetX = (endPointX - aLayer.position.x)/2  + aLayer.position.x
        let controlPointOffSetY = layer.position.y - 0.2 * layer.frame.size.height - CGFloat(random()%Int(1.2 * layer.frame.size.height))
        let endPointY = layer.position.y + layer.frame.size.height/2 + CGFloat(random()%Int(layer.frame.size.height/2))
        particlePath.addQuadCurveToPoint(CGPointMake(endPointX, endPointY), controlPoint: CGPointMake(controlPointOffSetX, controlPointOffSetY))
        return particlePath
    }
    
    private func colorWithPoint(x:Int,y:Int,image:UIImage) -> UIColor{
        let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage))
        let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
        
        let pixelInfo: Int = ((Int(image.size.width) * y) + x) * 4
        
        let a = CGFloat(data[pixelInfo]) / CGFloat(255.0)
        let r = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
        let g = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
        let b = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
        
        return UIColor(red: r, green: g, blue: b, alpha: a)
    }
    
    //移除粒子
    private func removeBoomCells(){
        if boomCells == nil {
            return
        }
        for item in boomCells!{
            item.removeFromSuperlayer()
        }
        boomCells?.removeAll(keepCapacity: false)
        boomCells = nil
    }


DEMO下载:

相关源码推荐:

我来说两句
*滑动验证:
所有评论(53)
doudou-wwcd 2016-5-25 10:52:35
有意思啊
回复
bellchen 2016-5-25 11:39:23
学习学习!
回复
cplg0277 2016-5-25 15:21:25
学习学习!
回复
sangvfvfd 2016-5-25 16:15:00
感谢分享,Code4App有你更精彩:)
回复
不明下落 2016-5-25 17:20:24
正需要啊,感谢楼主无私分享!
回复
hwp 2016-5-25 19:15:22
学习学习!
回复
0123456789ooooo 2016-5-26 09:52:31
感谢分享,Code4App有你更精彩
回复
王颖博 2016-5-26 09:56:21
感谢分享,Code4App有你更精彩
回复
dagouxionglz 2016-5-26 11:45:55
强烈支持楼主ing……
回复
提取码:  下载次数:70 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1745 1 70
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表