gpt4 book ai didi

ios - 快速/对快照执行多个操作

转载 作者:行者123 更新时间:2023-11-29 01:12:27 26 4
gpt4 key购买 nike

我有我的 View Controller 的快照,

...
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 最后执行,则向下移动,如果最小化 -> 最小化。

我怎样才能一个接一个地执行两个转换?

我确定我的问题是,快照没有更改,它始终是“源”快照,这就是为什么只有最后一个快照会采取行动。但是如何保存"new"快照的快照呢?

最佳答案

transform 属性不会永久修改原始数据,它只会在设置该属性时对其进行转换。因此,您一次只能使用一种变换。但是,您可以进行一次转换来完成许多事情。不要进行两种单独的变换,一种是移动的,另一种是缩放的,而是进行一种同时执行这两种变换的操作:

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

self.snapshot?.transform = moveDownAndScale

技巧是使用 CGAffineTransformScale 而不是 CGAffineTransformMakeScale。后者创建一个全新的变换,而前者将比例应用于现有变换。

关于ios - 快速/对快照执行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35579872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com