Изменить положение подвидового слоя - PullRequest
0 голосов
/ 20 ноября 2018

Добрый вечер,

Я пытался выяснить, как исчезать экран, когда я нажимаю кнопку, чтобы придать подпредставлению более отчетливый вид.Я исследовал zPositions и подумал, что реализация этой функции в моем коде поможет.Когда я запускаю свой код, весь экран исчезает.Я хотел бы, чтобы там было кольцо прогресса круга, которое появляется, в то время как фон исчезает.Я покажу картинку и мой код.Заранее спасибо.

The circle ring, I would like to be abover the faded screen.

 @objc func handlePost() {
    let center = view.center
    let trackLayer = CAShapeLayer()
    let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
    blackScreen=UIView(frame: self.view.bounds)
    blackScreen.backgroundColor=UIColor(white: 0, alpha: 0.8)
    blackScreen.isHidden=true
    self.navigationController?.view.addSubview(blackScreen)
    blackScreen.layer.zPosition=50
    blackScreen.isHidden=false
    self.view.backgroundColor = UIColor.white
    trackLayer.path = circularPath.cgPath
    trackLayer.strokeColor = UIColor.lightGray.cgColor
    trackLayer.lineWidth = 10
    trackLayer.fillColor = UIColor.clear.cgColor
    trackLayer.lineCap = kCALineCapRound
    // The zPosition is supposed to bring this layer to the front. 
    trackLayer.zPosition = 100
    shapeLayer.path = circularPath.cgPath
    shapeLayer.strokeColor = GREEN_Theme.cgColor
    shapeLayer.lineWidth = 10
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.lineCap = kCALineCapRound
    shapeLayer.strokeEnd = 0
    // The zPosition is supposed to bring this layer to the front. 
    shapeLayer.zPosition = 100
    let basicAnimation = CABasicAnimation(keyPath: "strokeEnd")
    basicAnimation.toValue = 1
    basicAnimation.duration = 2
    basicAnimation.fillMode = kCAFillModeForwards
    basicAnimation.isRemovedOnCompletion = false
    shapeLayer.add(basicAnimation, forKey: "dataSearch")
    shapeLayer.removeAnimation(forKey: "finished")
    view.layer.addSublayer(trackLayer)
    view.layer.addSublayer(shapeLayer)

}

1 Ответ

0 голосов
/ 21 ноября 2018

Снова проведя часы с моим кодом, мне удалось выяснить свой собственный ответ.прежде чем у меня было

     self.navigationController?.view.addSubview(blackScreen)
  // (faded screen)

, мне просто нужно было добавить

    self.view.addSubview(blackScreen)

, чтобы превратить его в слой, чтобы я мог манипулировать им с помощью zPosition.

...