Swift /对快照执行多个操作

时间:2016-02-23 14:15:10

标签: ios swift

我有一个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"的快照?快照?

1 个答案:

答案 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。后者创建了一个全新的变换,而前者将缩放应用于现有变换。