CALayer clipping - PullRequest
       46

CALayer clipping

0 голосов
/ 06 июня 2019

У меня есть CALayer, настроенный следующим образом:

private func setup() {

    guard let theLayer = self.layer as? CAGradientLayer else {
        return;
    }


    theLayer.colors = [UIColor.red.cgColor, UIColor.blue.cgColor] 
    theLayer.locations = [0.0, 1.0]
    theLayer.startPoint = CGPoint(x: 0, y: 0)
    theLayer.endPoint = CGPoint(x: 1, y: 0)
    theLayer.frame = self.bounds

}

Я хочу обрезать его в прямоугольник, основываясь на пользовательском вводимом значении (называемом «значением» в приведенном ниже коде).Как мне это сделать?

override func draw(_ rect: CGRect) {
    // Drawing code
        let frame = CGRect(x: 0, y: 0, width: rect.width, height: rect.height * (1-value))

   // How to clip or mask self.layer to above frame? 
}

1 Ответ

0 голосов
/ 01 июля 2019

Вставьте слой в слой контейнера, который имеет соответствующий frame и установите для его свойства masksToBounds значение true.

...