我在视图中使用适当的 AutoresizingMask 将子视图放在视图中,以便它们在视图大小发生变化时相应地适应。
当视图缩小太多甚至没有缩小时,我的问题就出现了。子视图似乎忘记了它们的原始位置并开始放置在奇怪的位置或缩放太多或太少。
最初的要求是将视图“缩小”到其中心,然后像气球一样“弹出”,从〜=零大小到原始帧大小。
我之前在其他项目中缩小并弹出视图没有太大问题我不知道是不是因为现在视图更复杂了
我在视图中使用适当的 AutoresizingMask 将子视图放在视图中,以便它们在视图大小发生变化时相应地适应。
当视图缩小太多甚至没有缩小时,我的问题就出现了。子视图似乎忘记了它们的原始位置并开始放置在奇怪的位置或缩放太多或太少。
最初的要求是将视图“缩小”到其中心,然后像气球一样“弹出”,从〜=零大小到原始帧大小。
我之前在其他项目中缩小并弹出视图没有太大问题我不知道是不是因为现在视图更复杂了
好吧,正如我所说,我以前做过这个,所以我只是检查了我的另一个项目,我发现了我的问题,我在这里发布答案,为任何感兴趣的人分享知识,因为我之前无法谷歌搜索。
问题是使用它们的框架缩小或扩大视图并不是正确的方法。
不好的例子:
[UIView animateWithDuration: 0.4 delay:0 options: UIViewAnimationCurveEaseInOut animations:^{
self.frame = CGRectMake(frame.origin.x + frame.size.width/2, frame.origin.y + frame.size.height/2, 10, 10);
} completion: nil];
相反,应该使用转换:
self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1);
[UIView animateWithDuration: 0.4 delay:0 options: UIViewAnimationCurveEaseInOut animations:^{
self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
} completion: nil];
考虑到这仅用于动画目的,以上将元素放在我缩小和扩大视图后它们应该放置的位置。
希望能帮助到你。