我遇到麻烦,如果你能给我一些建议,我将不胜感激。
基本上,我用Visual Format Language创建了一些约束,使我的基础更具动态性。我没有在故事板上触摸我的观点。
您可以将红色区域视为导航栏。
在示例视图中看起来像;
我的问题是;我想在一些viewController上隐藏我的topView。
首先我创建了一个属性;
@property (strong, nonatomic) NSLayoutConstraint *constraintTabbarHeight;
但我意识到我无法用VFL设置 NSLayoutConstraint 属性。因为VFL创建了一系列约束。
所以这是我的第一个问题; 无论如何要保持我的VFL约束与NSLayoutConstraint属性?
无论如何,所以我决定用 constraintWithItem 方法创建我的身高约束。
self.constraintTabbarHeight = [NSLayoutConstraint constraintWithItem:self.tabbarContainerView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:95];
其次,我在stackoverflow上搜索,我找到了一个方法。我可以从任何我想要的viewController中调用此方法。
- (void)updateTabbarConstraintWith:(int) heightValue{
self.constraintTabbarHeight.constant = heighValue;
[UIView animateWithDuration:0.3
animations:^{
[self.view layoutIfNeeded];
}];
}
如果我设置self.constraintTabbarHeight.constant = 0,一切都很好。我的TopView(redArea)正在消失,但PlaceholderView仍处于同一位置。
我认为[self.view layoutIfNeeded]会更新我的占位符视图,它会填满我的屏幕。
看起来像这样;
如何使其正确?
感谢您的回答。
答案 0 :(得分:0)
您需要从placeholderView.Top到TopView.Bottom创建一个约束,否则,一个人可以在不影响另一个的情况下移动