调整动画帧更改(自动调整蒙版)的子视图大小?

时间:2015-06-04 15:29:42

标签: ios objective-c frame autoresize autoresizingmask

我知道如果我通过更改图层的变换来更改视图的框架(在这种情况下,它只是采用所有子视图的视图并使用它就像是单个图像一样)。我使用它是不够的,因为:

  1. 计算合适的位置太难了;
  2. 我使用HMLauncherView,它有一些基于帧的逻辑 变换。
  3. 我尝试了很多这里描述的方法,但似乎它们都是自动布局的,因为它们都不起作用。根据自动调整蒙版的类型,一些元素跳转到目标位置,其中一些元素完全不受影响或受到奇怪的影响。

    如何解决这样的问题?有没有办法通过自动调整掩码来解决这个问题?

    EDITED

    动画代码(同样的结果是设置中心/边界):

    [UIView animateWithDuration:0.3 animations:^{
    
                    lastLauncherIcon.layer.transform = CATransform3DIdentity;
                    CGRect r = self.bounds;
                    r.origin.y = MAX(0, MIN(self.scrollView.contentOffset.y, self.scrollView.contentSize.height - self.bounds.size.height));
                    launcherIcon.frame = r;
                } completion:^(BOOL finished) {
    
                    ...
                }];
    

    layoutSubviews的代码似乎是额外的,因为我已经尝试子类UILabel,它总是跳转到动画目标位置。调查显示,当我仅设置视图的框架/边界时,会设置此标签的框架。在其他情况下,当您直接调用标签时,会调用标签setCentersetFramesetBounds

    This question is very similar but the suggested solution doesn't work for my case.我也发现我已经破坏了某些内容,因此转换后的视图不会出现在iOS 7.1(可能是7.x)上,而是在8.3上工作。

0 个答案:

没有答案