• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > ios纯色图片ios渐变色怎么写?

ios纯色图片ios渐变色怎么写?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了ios纯色图片ios渐变色怎么写?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:ios纯色图片 ios 渐变色怎么写?
描述:

项目有个需求,就给给一个进度圈添加渐变色,小白完全不知道怎么实现,请教下,下图是视觉效果

实现上面的那个圈圈外侧的渐变色进度圈,如何取出渐变色彩(比如红黄渐变 、黄白渐变这样)呢?


解决方案1:

用CAGradientLayer显示一个渐变矩形
然后用CAShapeLayer绘制一个圆形mask就好了

解决方案2:

自定义View如下

private let kProgressWidth: CGFloat = 80
private let kProgressLineWidth: CGFloat = 10
class ColorRingView: UIView {

    var progressLayer: CAShapeLayer
    override init(frame: CGRect) {
        self.progressLayer = CAShapeLayer.init()
        super.init(frame: frame)

        let path = UIBezierPath.init(arcCenter: CGPointMake(frame.size.width / 2, frame.size.height / 2), radius: kProgressWidth, startAngle: degreesToRadians(-90), endAngle: degreesToRadians(90), clockwise: true)

        progressLayer.frame = self.bounds
        progressLayer.fillColor = UIColor.clearColor().CGColor
        progressLayer.strokeColor = UIColor.whiteColor().CGColor
        progressLayer.lineCap = kCALineCapRound
        progressLayer.lineWidth = kProgressLineWidth
        progressLayer.path = path.CGPath
        progressLayer.strokeEnd = 1.0

        let gradientLayer = CALayer.init()
        let mainGradientLayer = CAGradientLayer.init()

        mainGradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);
        mainGradientLayer.colors = [UIColor.init(netHex: 0xFF9B55).CGColor, UIColor.whiteColor().CGColor]
        mainGradientLayer.startPoint = CGPointMake(0.5, 0)
        mainGradientLayer.endPoint = CGPointMake(0.5, 1)
        gradientLayer.addSublayer(mainGradientLayer)

        gradientLayer.mask = progressLayer

        self.layer.addSublayer(gradientLayer)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    func degreesToRadians(degress: Double) -> CGFloat {
        return CGFloat(M_PI * (degress) / 180.0)
    }

    func setPercent(percent: CGFloat) {
        CATransaction.begin()
        CATransaction.setDisableActions(true)
        let camtf = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseIn)
        CATransaction.setAnimationTimingFunction(camtf)
        CATransaction.setAnimationDuration(5)
        progressLayer.strokeEnd = percent / 100.0

        CATransaction.commit()
    }

}

extension UIColor {
    convenience init(red: Int, green: Int, blue: Int) {
        assert(red >= 0 && red <= 255, "Invalid red component")
        assert(green >= 0 && green <= 255, "Invalid green component")
        assert(blue >= 0 && blue <= 255, "Invalid blue component")

        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
    }

    convenience init(netHex: Int) {
        self.init(red: (netHex >> 16) & 0xff, green: (netHex >> 8) & 0xff, blue: netHex & 0xff)
    }
}

然后在Controller里面使用

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let ring = ColorRingView.init(frame: CGRectMake(100, 100, 240, 240))
        self.view.addSubview(ring)
    }
}

效果图:

主要知识点就是CAGradientLayer,稍微理解下startPoint、endPoint和locations这几个属性就能掌握使用了。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 xcode8同时导入PLCameraStreamingKit和PLPlayerKit真机运行也报错
  • 2017-06-05 iosswiftstring类型转化为CGfloat给CGRectMake
  • 2017-06-05 我用InstrumentsTimeProfiler时,无法定位代码,如何破?
  • 2017-06-05 什么东东CTFrame是什么东东?
  • 2017-06-05 iOS从服务器获取推流地址在demo中使用报错
  • 2017-06-05 xcode上传报错ITMS-90534
  • 2017-06-05 iOSimageView渲染的问题
  • 2017-06-05 关于Autolayout,子UILABEL控件不能控制父UIVIEW的高度
  • 2017-06-05 iOS中的webview加载的是html。。那么html中的外联js和CSS文件怎么加载?
  • 2017-06-05 iOS开发,一个label里有数字有汉字,怎样让数字的font比汉字大

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • IOSApp开发和发布过程中用到的证书
    • iOS远程推送IOS使用个推消息推送无法收到通知
    • UIDocumentInteractionController创建就crash有大侠么?
    • afnetworking从接口中得到数据,怎么把数据放在另外的变量里呢
    • 如何通过InterfaceBuilder设置数组的值
    • iOS关于elasticsearch的接口怎么调用啊
    • (swift)asNSArray和as!NSArray和asNSArray!有什么区别?
    • 有关viewDiddisappear和viewDidAppear
    • iOS直播加滤镜
    • 自考通知单ios系统通知和自定义通知我想知道WHY

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有