我有一个简单的布局,其中有一个containerView
从整个屏幕开始。在里面,我有两个垂直的子视图——topView (green), botView (orange)
它们需要相等的高度并且应该有 50% 的containerView
高度。
启动后,我从屏幕外从底部向上滑动视图(蓝色),导致containerView
调整到较短的高度。
我期望发生的是topView
andbotView
都会变短,保持它们在 内的均匀高度containerView
,但实际发生的是内部视图没有调整大小,尽管这样做有限制。
因为这段代码有一些基于代码的约束,还有一些 IB 约束,所以这里有一个示例项目来查看它的运行情况。这是被忽略的约束:
NSLayoutConstraint *c1 = [NSLayoutConstraint constraintWithItem:self.topView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeHeight
multiplier:0.5f
constant:0.f];
[self.containerView addConstraint:c1];
和调整视图代码:
- (void)resizeViews {
__weak UAViewController *weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.25 animations:^{
weakSelf.slideInView.frame = CGRectMake(CGRectGetMinX(weakSelf.view.bounds),
CGRectGetMaxY(weakSelf.view.bounds) - CGRectGetHeight(weakSelf.slideInView.frame),
CGRectGetWidth(weakSelf.view.bounds),
CGRectGetHeight(weakSelf.slideInView.frame));
weakSelf.containerView.frame = CGRectMake(CGRectGetMinX(weakSelf.view.bounds),
CGRectGetMinY(weakSelf.view.bounds),
CGRectGetWidth(weakSelf.view.bounds),
CGRectGetMaxY(weakSelf.view.bounds) - CGRectGetHeight(weakSelf.slideInView.frame));
}];
});
}
我在这里做错了什么?