遇到问题时,请在父视图中保留KDCircularProgress视图

时间:2018-04-01 08:39:01

标签: swift uiview uiviewanimation kdcircularprogress

我尝试在我的项目中使用KDCircularProgress在progressView类中固有的UIView类

init(frame: CGRect) {

    progress = KDCircularProgress(frame: frame)

    letter = "A"

    super.init(frame: frame)

    setupCircularProgress(frame: frame)

    UILabel()
        .add(to: self)
        .layout { (make) in
            make.center.equalToSuperview()
    }.config { (view) in
        view.text = letter
    }   

}

和setupCircularProgress函数:

func setupCircularProgress(frame:CGRect) {
    progress.clockwise = true
    progress.set(colors: randomColor(hue: .random, luminosity: .light))
    progress.glowMode = .forward
    progress.glowAmount = 0
    progress.center = self.center
    progress.trackColor = UIColor.white


    self.addSubview(progress)

    progress.animate(fromAngle: 0, toAngle: 360, duration: 5, completion: { completed in
        if completed {
            print("animation stopped, completed")
            self.removeFromSuperview()
        } else {
            print("animation stopped, was interrupted")
        }
    })
}

在viewController中

LetterView(frame: CGRect(x: 50, y: 50, width: 50, height: 50)).add(to: self.playView!)

但它显示如下 showed view

我不知道为什么KDCircularProgress在框架之外,只有textLabel在正确的位置。 并且没有逻辑根据指定的帧显示KDCircularProgress视图。

如果有人处理过这种情况和问题,请告诉我如何解决。

1 个答案:

答案 0 :(得分:0)

有趣的是,在我提出问题后,我得到了答案:)

在我的自定义UIView中,我应该像这样启动KDCircularProgress

 progress = KDCircularProgress(frame: CGRect(x: 0, y: 0, width: frame.width, height: frame.height))

因为这个位置是相对于UIView。