从下到上逐渐填充一个圆圈swift2

Posted

技术标签:

【中文标题】从下到上逐渐填充一个圆圈swift2【英文标题】:filling a circle gradually from bottom to top swift2 【发布时间】:2018-07-31 13:51:10 【问题描述】:

基本上我是 Swift 2 的新手,并且使用下面的代码创建了一个带有笔划和白色背景的圆圈,然后我得到了一个类似这样的圆圈:

func getDynamicItemQty() -> UIImage 

    let View = UIView(frame: CGRectMake(0,0,200,200))

    let circlePath =
        UIBezierPath(arcCenter: CGPoint(x: 100,y: 100), radius: CGFloat(90), startAngle: CGFloat(9.4), endAngle:CGFloat(0), clockwise: false)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = circlePath.CGPath


    //shapeLayer.fillRule = kCAFillRuleEvenOdd
    //change the fill color
    shapeLayer.fillColor = UIColor.brownColor().CGColor
    //you can change the stroke color
    shapeLayer.strokeColor = UIColor.blueColor().CGColor
    //you can change the line width
    shapeLayer.lineWidth = 10

    View.layer.addSublayer(shapeLayer)

    return UIImage.renderUIViewToImage(View)

但是,我们如何在 Swift 2 中绘制部分水平填充的圆圈?我的意思是根据 Swift 代码中指定的百分比从下到上填充的圆圈。

这是我们需要的预览:

【问题讨论】:

如果你是 Swift 新手,你不应该使用 Swift 2。它已经过时了。学习 Swift 4。 你的图片是一样的 - 你的意思是第一张图片看起来不同吗? 在这里,我给出了两个图像的答案,但是,它是从上到下的。 ***.com/questions/48836938/… @rmaddy 抱歉,我编辑了第一张图片 我正在开发 swift 2 项目,所以现在不能切换 swift 最新版本 【参考方案1】:

视图和形状图层绝对是最合适的方法。您应该查看UIGraphicsBeginImageContextWithOptionsios 10 或更新版本UIGraphicsImageRenderer。对于您的问题:您应该画两次圆圈。类似的东西:

let size = CGSize(width: 200.0, height: 200.0)
UIGraphicsBeginImageContextWithOptions(size, true, 0)
let circlePath =
    UIBezierPath(arcCenter: CGPoint(x: 100, y: 100), radius: CGFloat(90), startAngle: CGFloat(9.4), endAngle:CGFloat(0), clockwise: false)

UIColor.white.fill()
UIRectFill(origin: CGPoint.zero, size: size)
// Drawing the background with a clipping
UIGraphicsPushContext(UIGraphicsGetCurrentContext())
UIColor(...).setFill()
UIRectClip(CGRect(x: 0.0, y:10.0 + 180.0 * (1.0 - percentage), width:size.width, height:size.height))
circlePath.fill()
// leave the subcontext to discard the clipping
UIGraphicsPopContext()
UIColor(...).setStroke()
circlePath.lineWidth = 10.0
circlePath.stroke()

// Keep the fruits of our labour
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

【讨论】:

以上是关于从下到上逐渐填充一个圆圈swift2的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个从下到上包含 0 到 1 不透明度值(alpha 值)的 UIView?

ActionScript 3 从下到上绘制条形图补间

xcode - 从下到上的 TableView 行

Swiftui 动态动画面板从下到上

从下到上显示聊天消息

从下到上显示元素,如 facebook 消息