2016-02-23 3 views
0

У меня есть снимок моей ViewController,Swift/выполнить несколько действий по снимку

... 
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)! 
... 
snapshot = fromView.snapshotViewAfterScreenUpdates(true) 
... 
container!.addSubview(snapshot!) 
... 

Я хочу, чтобы выполнить перемещение и изменение размера.

let moveDown = CGAffineTransformMakeTranslation(200, container!.frame.height - 600)   
    let minimalize = CGAffineTransformMakeScale(0.6, 0.6) 

Но вызов как:

  self.snapshot?.transform = moveDown 
      self.snapshot?.transform = minimalize 

только выполняет один из преобразований. Если moveDown выполняет последнее действие, он перемещается вниз, если минимализировать -> минимализировать.

Как я могу выполнить два преобразования за другим?

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

ответ

1

Свойство transform не навсегда изменяет исходные данные, оно только преобразует его, пока это свойство установлено. Таким образом, вы можете использовать только одно преобразование за раз. Тем не менее, вы можете сделать преобразование делать много вещей сразу. Вместо того, чтобы сделать два отдельных преобразований, одна из которых движется и тот, который масштабируется, сделать то, что делает как:

let moveDown = CGAffineTransformMakeTranslation(200, container!.frame.height - 600) 
let moveDownAndScale = CGAffineTransformScale(moveDown, 0.6, 0.6) 

self.snapshot?.transform = moveDownAndScale 

Хитрость заключается в том, чтобы использовать CGAffineTransformScale в отличие от CGAffineTransformMakeScale. Позднее создается совершенно новое преобразование, в то время как первое применяет масштаб к существующему преобразованию.

+0

гений. работает отлично. Спасибо –

Смежные вопросы