所以我正在尝试为一些布局约束设置动画并且运气不佳,我只是什么也没看到,然后我收到一条错误消息,说明它如何不能同时满足所有约束等。
我正在使用一个名为PullableView的类,它的动画使用旧样式[UIView commitAnimation]
,所以我将它子类化并添加到我的代码中,我认为这将用于动画约束......没有这样的运气并试图对其进行动画处理,甚至让它做很多事情任何事情都被证明是困难的,我只是得到“无法同时满足约束”。问题是我对这个约束业务相当陌生,所以我不知道从哪里开始。
这是错误,另一个几乎相同,但对于centerY。
"<NSLayoutConstraint:0x7c8a3a0 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX>",
"<NSLayoutConstraint:0x7c6b480 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX + 128>"
我当然会[pullRightView setTranslatesAutoresizingMaskIntoConstraints:NO];
在调用这个之前
任何帮助表示赞赏。
- (void)setOpenedForConstraints:(BOOL)op animated:(BOOL)anim
{
opened = op;
if (anim)
{
NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:_parentView
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0];
NSLayoutConstraint *constraintY = [NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:_parentView
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0];
[_parentView addConstraint:constraintX];
[_parentView addConstraint:constraintY];
constraintX.constant = opened ? self.openedCenter.x : self.closedCenter.x;
constraintY.constant = opened ? self.openedCenter.y : self.closedCenter.y;
}
if (anim)
{
// For the duration of the animation, no further interaction with the view is permitted
dragRecognizer.enabled = NO;
tapRecognizer.enabled = NO;
//[UIView commitAnimations];
[UIView animateWithDuration:animationDuration
animations:^
{
[self layoutIfNeeded];
}];
}
else
{
if ([delegate respondsToSelector:@selector(pullableView:didChangeState:)])
{
[delegate pullableView:self didChangeState:opened];
}
}
}