【问题标题】:Trying to create circular progress bar in Swift尝试在 Swift 中创建圆形进度条
【发布时间】:2014-09-27 22:45:58
【问题描述】:

我正在尝试在 Swift 中为我的应用程序添加一个圆形进度条,但是我无法找到任何 Swift 特定示例。因此,我找到了最简单的 Objective C 示例,并尝试将其翻译成 Swift。

这是我正在关注的示例:Using circular progress bar with masked image?

我卡在这条线上:

    CGPoint center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));

CGRectGetMidX 在 Swift 中似乎不可用。

到目前为止,这是我的所有代码:

    func drawRect(rect: CGRect) {
    var ctx = UIGraphicsGetCurrentContext()

    var progress: CGFloat = 0.7
    var innerRadiusRatio: CGFloat = 0.5

    var path: CGMutablePathRef = CGPathCreateMutable()
    var startAngle: CGFloat = -M_PI_2
    var endAngle: CGFloat = -M_PI_2 + MIN(1.0, progress) * M_PI * 2
    var outerRadius: CGFloat = CGRectGetWidth(self.bounds) * 0.5 - 1.0
    var innerRadius: CGFloat = outerRadius * innerRadiusRatio
}

我哪里错了?除了努力翻译这一行之外,其他行也有一些错误。

【问题讨论】:

    标签: ios swift cgpoint


    【解决方案1】:

    我在该行根本没有收到错误 - 据我所知,`CGRectGetMidX 仍然可用:

    var center = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect))
    

    给我错误的另一行是这一行——这些常量的类型为Double,需要转换为CGFloat,而在Swift中,方法是min而不是MIN

    var endAngle: CGFloat = CGFloat(-M_PI_2) + min(1.0, progress) * CGFloat(M_PI) * 2
    

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      相关资源
      最近更新 更多