我知道如果我通过更改图层的变换来更改视图的框架(在这种情况下,它只是采用所有子视图的视图并使用它就像是单个图像一样)。我使用它是不够的,因为:
HMLauncherView
,它有一些基于帧的逻辑
变换。我尝试了很多这里描述的方法,但似乎它们都是自动布局的,因为它们都不起作用。根据自动调整蒙版的类型,一些元素跳转到目标位置,其中一些元素完全不受影响或受到奇怪的影响。
如何解决这样的问题?有没有办法通过自动调整掩码来解决这个问题?
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
,它总是跳转到动画目标位置。调查显示,当我仅设置视图的框架/边界时,会设置此标签的框架。在其他情况下,当您直接调用标签时,会调用标签setCenter
,setFrame
和setBounds
。
This question is very similar but the suggested solution doesn't work for my case.我也发现我已经破坏了某些内容,因此转换后的视图不会出现在iOS 7.1(可能是7.x)上,而是在8.3上工作。