だから私はいくつかのレイアウト制約をアニメーション化しようとしていますが、運が悪いです.何も表示されず、すべての制約を同時に満たすことができないなどのエラーメッセージが表示されます.
アニメーションが古いスタイルを使用しているPulableViewというクラスを使用している[UIView commitAnimation]
ので、それをサブクラス化し、制約をアニメーション化するためのものと思われるコードに追加しました...そのような運がなく、それをアニメーション化しようとしたり、多くのことを実行させたりすることさえできません「制約を同時に満たすことができません」というメッセージが表示されるだけです。
これがエラーです。もう1つはほとんど同じですが、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];
}
}
}