【发布时间】:2015-01-11 16:05:12
【问题描述】:
我正在尝试为从左侧滑入并使用整个空间的全屏视图设置动画。
我有以下代码在 iOS 8 上完美地完成了预期的工作,但在 iOS 7 上却失败了:
[source.view addSubview:destination.view];
NSDictionary *viewsDict = @{@"tableView":destination.tableView,
@"tapView": destination.tapView,
@"destinationView": destination.view};
[source.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[destinationView]|" options:0 metrics:nil views:viewsDict]];
source.leftConstraint = [NSLayoutConstraint constraintWithItem:destination.tableView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:source.view
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:-source.view.bounds.size.width];
[source.view addConstraint:source.leftConstraint];
source.rightConstraint = [NSLayoutConstraint constraintWithItem:source.view
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:destination.tapView
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:source.view.bounds.size.width];
[source.view addConstraint:source.rightConstraint];
[source.view layoutIfNeeded];
[UIView animateWithDuration:.35f animations:^{
source.rightConstraint.constant = 0;
source.leftConstraint.constant = 0;
[source.view layoutIfNeeded];
}];
在 iOS 7 上执行此操作时,destination.view 会立即添加到屏幕上,而不会出现任何动画。知道为什么会这样吗?
【问题讨论】:
-
您解决了吗?看到同样的问题。
-
我稍微更改了我的代码,现在我在 iOS 7 和 iOS 8 上的行为一致,但这段代码的行为仍然不同。
标签: ios ios7 ios8 autolayout