Swift 扇形排列成圆

本文介绍如何使用Swift实现扇形排列成圆环的效果。通过继承UIControl并重写drawRect方法,利用CGContextDrawArc绘制扇形。同时,通过手势识别和颜色数组实现手指滑动时颜色变换的功能。提供了关键代码片段和完整Demo的调用方法。
摘要由CSDN通过智能技术生成

由于项目需求,需要做个这种的东西来实现某种功能,我在网上找到了很多资料却始终不行,最终和本公司的安卓商量出来这个方法,基本思想就是画四十八个扇形,围绕圆的中心绘制成这样一个圆环,如图所示:

圆.gif
我是继承 UIControl 类来实现的,主要就是重写它的 drawRect 方法,来绘制这个"圆", 不多说,看代码:

    override func draw(_ rect: CGRect) {

        var blockBeginAngle = degreesToRandinas(deg: beginAngle)
        var blockEndAngle = degreesToRandinas(deg: beginAngle + blockAngle)
        let context = UIGraphicsGetCurrentContext()

        for index in 0..<blockCount {
            drawImage(context: context!,
                      startAngle: blockBeginAngle,
                      endAngle: blockEndAngle,
                      colorIndex: index)

            // 下一块的起始角度和终止角度
            blockBeginAngle = blockBeginAngle + degreesToRandinas(deg: blockAngle + sweepAngle)
            blockEndAngle = blockEndAngle + degreesToRandinas(deg: blockAngle + sweepAngle)
        }
    }

    private func drawImage(context: CGContext,
                   startAngle: CGFloat,
                   endAngle: CGFloat,
                   colorIndex: Int) {

        // 画扇形
        context.addArc(center: CGPoint(x: pointX, y: pointY),
                       radius: outerRadius,
                       startAngle: startAngle,
                       endAngle: endAngle,
                       clockwise: false)

        context.addArc(center: CGPoi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值