我在iOS中使用故事板制作动画界面。我有一个UIView
的子类,名为AnimatedView
,所有的接口元素都作为其子视图。
我需要能够更改所有这些子视图的帧,变换,边界,alpha等。这结果是一个问题。当我的AnimatedView
layoutSubviews
方法被其父级调用时,它会调用一些名为UIView
的{{1}}私有方法,该方法会更改我的所有子视图' _is_layout
和bound
属性回到过去的状态。
如果我以编程方式添加UIViews,这并没有发生,一切正常,但我与图形设计师合作,我不希望他们不得不乱用代码。
经过一些反复试验,我发现删除frame
上的所有自动布局限制使其无法重置AnimatedView
,但它仍会重置frame
秒。这是bound
被覆盖的AnimatedView
方法的样子:&/ p>
layoutSubviews
通过消除限制,我是否在正确的轨道上?我已经阅读了auto layout guide,但我无法弄清楚为什么这会对我有所帮助。我没有在-(void)layoutSubviews{
[self createAnimationsFromPlist: filePath];
[self removeConstraints: self.constraints];
[super layoutSubviews];
//set everything to its initial frame
[self.animator animate:0];
}
的故事板中使用约束,但AnimatedView
由于某种原因有20个元素。
如果有帮助,请举例说明我如何制作视图动画:
self.constraints
答案 0 :(得分:2)
使用自动布局时,无法直接设置frame
,center
或bounds
属性,并且转换可能无法按预期工作。
所以是的,对于这种动画,最好让视图不受自动布局控制。