Изменить положение подвидового слоя

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

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

Кольцо круга, я хотел бы быть над блеклым экраном

 @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 ответ

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

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

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

    self.view.addSubview(blackScreen)

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

Другие вопросы по тегам