gpt4 book ai didi

objective-c - 设置 frame.origin 与 CGAffineTransformMakeTranslation 之间的性能差异

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:07 26 4
gpt4 key购买 nike

我有一个类似网格的缩略图 ScrollView ,我首先在其中初始化所有缩略图,然后设置其框架:

thumbnail.frame = CGRectMake(0, 0, 100, 100);

然后在 willAnimateRotationToInterfaceOrientation 上,重新定位这些缩略图:

thumbnail.transform = CGAffineTransformMakeTranslation(posX, posY);

虽然在上述方法后检查位置时:

NSLog(@"thumbnail frame x: %f", thumbnail.frame.origin.x);

它将返回包含转换操作的位置,而不是 0,0

使用 transform 而不是为 UIView 设置新的 frame 作为重新定位的目的真的有好处吗?

最佳答案

主要的好处是你可以使用更多类型的仿射变换,比如

  • CGAffineTransformTranslate
  • CGAffineTransformScale
  • CGAffineTransformRotate
  • CGAffineTransformInvert
  • CGAffineTransformConcat

但 frame struct 仅设置框架。

其他注意事项:

1) 出于性能原因,假设 CGAffineTransformMakeTranslation(posX, posY) 仅更改 center 属性,它看起来应该比更改 frame< 工作得更快 属性,但谁知道呢。因此,出于重新定位的目的,我会使用这种方式或更改 center 属性。

2) 与 CALayertransform 相比,UIViewtransform 改变了查看。

关于objective-c - 设置 frame.origin 与 CGAffineTransformMakeTranslation 之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813667/

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