Анимированное изменение размера NSView не влияет на слой. Баг или совершенно правильно?

У меня есть два подкласса NSView:

  • DrawRectView просто рисует цвет фона, используя метод drawRect
  • LayerBackedView также рисует цвет фона, используя подложку слоя

Следующий фрагмент кода изменяет размер анимации с помощью действий щелчка на представлениях:

@IBAction func clickDrawRectView(sender: NSClickGestureRecognizer) {
    let height = drawRectView.frame.height * 1.2
    let width  = drawRectView.frame.width * 1.2
    NSAnimationContext.runAnimationGroup({ (context) in
        context.duration = 1.0
        self.drawRectView.animator().frame = NSMakeRect(self.drawRectView.frame.origin.x, self.drawRectView.frame.origin.y, width, height)
    }, completionHandler: nil)
}

@IBAction func clickLayerBackedView(sender: NSClickGestureRecognizer) {
    let height = layerBackedView.frame.height * 1.2
    let width  = layerBackedView.frame.width * 1.2
    NSAnimationContext.runAnimationGroup({ (context) in
        context.duration = 1.0
        self.layerBackedView.animator().frame = NSMakeRect(self.layerBackedView.frame.origin.x, self.layerBackedView.frame.origin.y, width, height)
    }, completionHandler: nil)
}

DrawRectView оживляет как ожидалось, но LayerBackedView не делает. Он просто переходит на следующий прямоугольник с любой анимацией.

Так как же перенести ту же анимацию в представление со слоями?

0 ответов

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