2016-02-23 94 views
0

我有我的viewController的快照執行多個操作,斯威夫特/上快照

... 
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最後執行,它會向下移動,如果最小化 - >最小化。

我該如何執行兩個轉換?

我確定我的問題是,快照沒有改變,它始終是「源」快照,這就是爲什麼只有最後一個會採取行動。但是,如何保存「新」快照的快照?

回答

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

天才。作品完美。謝謝 –