Vì vậy, tôi đang cố gắng để animate một số hạn chế bố trí và đang gặp khốn khổ may mắn, tôi chỉ không nhìn thấy bất cứ điều gì và sau đó tôi nhận được một thông báo lỗi nói rằng nó như thế nào không thể đồng thời đáp ứng tất cả ép, vvcó lập trình NSLayoutConstraint vấn đề hoạt hình
Tôi đang sử dụng một lớp được gọi là PullableView có hoạt ảnh đang sử dụng kiểu cũ [UIView commitAnimation]
vì vậy tôi đã phân loại nó và thêm vào mã của tôi cho những gì tôi tin là dành cho các ràng buộc sinh động ... Không may mắn và cố gắng làm động hoặc thậm chí làm cho nó hoạt động nhiều của bất cứ điều gì chứng minh được khó khăn tôi chỉ nhận được "Không thể đồng thời đáp ứng những hạn chế" .. Vấn đề là tôi khá mới để kinh doanh hạn chế này vì vậy tôi sẽ không biết bắt đầu từ đâu.
đây là lỗi khác là khá nhiều giống nhau nhưng đối với trung tâm.
"<NSLayoutConstraint:0x7c8a3a0 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX>", "<NSLayoutConstraint:0x7c6b480 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX + 128>"
tôi dĩ nhiên làm [pullRightView setTranslatesAutoresizingMaskIntoConstraints:NO];
trước khi gọi này
bất kỳ sự giúp đỡ đánh giá cao.
- (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];
}
}
}
Cảm ơn câu trả lời, tôi sẽ nghiên cứu kỹ ... Tôi cũng loại bỏ tất cả các ràng buộc trước khi thêm ... ... – Genhain
@Genhain Tôi nghĩ rằng đó là dễ dàng hơn nhiều để thay đổi các ràng buộc hơn là thêm và loại bỏ. Và hãy cẩn thận với những ràng buộc mà bạn đã xác định cho chế độ xem ở vị trí đầu tiên. Ví dụ, nếu tôi định trượt nó sang bên trái, tôi đã định nghĩa nó với đỉnh, đáy, trái và chiều rộng (nhưng không đúng!), Và sau đó tôi có thể tạo hiệu ứng động bằng cách thay đổi hằng số của ràng buộc trái . Xem câu trả lời đã sửa đổi. Tôi phải thú nhận rằng tôi đã không thể giải mã những gì UX mong muốn của bạn là từ mẫu mã của bạn, vì vậy nếu bạn làm rõ những gì bạn đang cố gắng để thực hiện, tôi có thể hữu ích hơn. – Rob
Câu trả lời hay, nhưng điểm 2 trong danh sách đầu tiên của bạn là sai. Chỉ layoutIfNeeded phải nằm trong khối hoạt ảnh. – jrturton