博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift - 画图 - 画矩形,虚线,圆和半圆
阅读量:6123 次
发布时间:2019-06-21

本文共 2355 字,大约阅读时间需要 7 分钟。

 

 

 

 

 

import UIKitclass JYJYBouncedCouponsViewCellBgView: UIView {    //一定要在这里设置 背景色, 不要再draw里面设置,     override init(frame: CGRect) {        super.init(frame: frame)        self.backgroundColor = UIColor.clear    }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }        override func draw(_ rect: CGRect) {        // 获取上下文        guard let context = UIGraphicsGetCurrentContext() else {            return        }                //画一个矩形, 带圆角的,填充色为FFE4C3,切圆角5        UIColor.init(hexColor: "FFE4C3").set()        context.addPath(UIBezierPath(roundedRect: rect, cornerRadius: 5).cgPath)        context.fillPath()        //填充色setFillColor , 画线的颜色setStrokeColor//        context.setFillColor(UIColor.init(hexColor: "FFE4C3").cgColor)                // 画虚线        /**设置起始和结束位置**/        let startPointX: CGFloat = rect.size.width - 97        let staerPointY: CGFloat = 0        let endPointX: CGFloat = rect.size.width - 97        let endPointY: CGFloat =  rect.size.height        let path = CGMutablePath()        path.move(to: CGPoint(x: startPointX, y: staerPointY))        path.addLine(to: CGPoint(x: endPointX, y: endPointY))        context.addPath(path)                context.setStrokeColor(UIColor.init(hexColor: "FF8E00").cgColor)        context.setLineWidth(1)        /*         phase参数表示在第一个虚线绘制的时候跳过多少个点         lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复         如果把lengths值改为{10, 20, 10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复         */        context.setLineDash(phase: 0, lengths: [5,5])        context.strokePath()                // 画半圆        UIColor.clear.set()        /***设置圆心位置***/        let circleY: CGFloat =  0        let topCirclePoint: CGPoint = CGPoint(x: rect.size.width - 97, y: circleY)        let bottomCenterPoint: CGPoint = CGPoint(x: rect.size.width - 97, y: rect.size.height)        let topCircle = UIBezierPath(arcCenter: topCirclePoint, radius: 5, startAngle: -CGFloat.pi, endAngle: CGFloat.pi, clockwise: true)        let bottpmCircle = UIBezierPath(arcCenter: bottomCenterPoint, radius: 5, startAngle: -CGFloat.pi, endAngle: CGFloat.pi, clockwise: true)        context.setBlendMode(.clear)        context.addPath(topCircle.cgPath)        context.addPath(bottpmCircle.cgPath)        context.fillPath()    }}

  

转载于:https://www.cnblogs.com/qingzZ/p/9474223.html

你可能感兴趣的文章
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
游戏设计的基本构成要素有哪些?
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>
js中var、let、const的区别
查看>>
腾讯云加入LoRa联盟成为发起成员,加速推动物联网到智联网的进化
查看>>
从Python2到Python3:超百万行代码迁移实践
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
简洁优雅地实现夜间模式
查看>>