IOS - 在收缩太多时自动调整视图问题

时间:2012-12-07 21:03:52

标签: ios size frame transform autoresize

我的视图中包含适当的AutoresizingMasks的子视图,以便在视图大小更改时相应地适应。

当视图缩小太多,甚至没有那么多时,我的问题就出现了。子视图似乎忘记了它们的原始位置,并开始放置在奇怪的位置或扩展太多或太少。

最初的要求是将“缩小视图”缩小到其中心,然后像气球一样“弹出”,从〜=零大小到原始帧大小。

我之前已经缩小并弹出了视图而在其他项目中没有太大问题我不知道是不是因为视图现在更复杂

1 个答案:

答案 0 :(得分:0)

好吧,就像我说的那样,我之前做过这个,所以我只是检查了我的另一个项目,我发现了我的问题,我在这里发布答案,分享对任何感兴趣的人的知识,因为我之前无法谷歌。

问题是,使用框架缩小或增加观看次数并不是正确的方法。

错误的例子:

[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];

上面将元素放在我缩小和增长视图后的位置,考虑到仅用于动画目的。

希望它有所帮助。