我有一个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执行最后一次,则向下移动,如果minimalize - > minimalize。
如何在另一个之后执行两次转换?
我确定我的问题是,快照没有改变,它始终是"来源"快照,这就是为什么只有最后一个会采取行动。但是如何保存" new"的快照?快照?
答案 0 :(得分:1)
transform
属性不会永久修改原始数据,只有在设置该属性时才会对其进行转换。因此,您一次只能使用一个转换。但是,你可以让变换一次做很多事情。不是进行两个单独的变换,一个是移动而另一个是缩放,而是制作两个变换:
let moveDown = CGAffineTransformMakeTranslation(200, container!.frame.height - 600)
let moveDownAndScale = CGAffineTransformScale(moveDown, 0.6, 0.6)
self.snapshot?.transform = moveDownAndScale
诀窍是使用CGAffineTransformScale
而不是CGAffineTransformMakeScale
。后者创建了一个全新的变换,而前者将缩放应用于现有变换。