以编程方式删除约束的效果xcode

时间:2014-06-17 16:26:46

标签: ios uiview storyboard constraints autolayout

我在iOS中使用故事板制作动画界面。我有一个UIView的子类,名为AnimatedView,所有的接口元素都作为其子视图。

我需要能够更改所有这些子视图的帧,变换,边界,alpha等。这结果是一个问题。当我的AnimatedView layoutSubviews方法被其父级调用时,它会调用一些名为UIView的{​​{1}}私有方法,该方法会更改我的所有子视图' _is_layoutbound属性回到过去的状态。

如果我以编程方式添加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

1 个答案:

答案 0 :(得分:2)

使用自动布局时,无法直接设置framecenterbounds属性,并且转换可能无法按预期工作。

所以是的,对于这种动画,最好让视图不受自动布局控制。