我在Main视图中有两个UIViews垂直对齐,有业务逻辑,如果usertype A被登录需要显示两个视图,如果usertype B登录需要只显示顶视图并隐藏底部视图但topview应该得到总框架还有什么人可以建议我如何用Autolayout实现?。
答案 0 :(得分:0)
您应该为底部视图定义高度约束。
主要思想是为您的目的改变约束。只需在代码中创建高度插座,并在需要隐藏时将其设置为0(如果需要,可选择将hidden属性设置为YES)
故事板步骤:
答案 1 :(得分:0)
如果您的部署目标是iOS 9或更高版本,最简单的方法是将视图放在UIStackView
中:
我将两个视图(加上工具栏)放在垂直堆栈视图中。我将每个视图的前沿和后沿约束到堆栈视图,并将顶视图和底视图约束为具有相等的高度。然后我将等高约束的优先级设置为249(相当低的优先级)。如果您不想要相同的高度,则可以在两个视图都可见时设置所需的任何高度限制。只需将它们设置为低优先级,这样当只显示一个视图时,堆栈视图可以覆盖它们。
即使使用动画,隐藏和显示视图也很容易。就这么简单:
@interface ViewController ()
@property (strong, nonatomic) IBOutlet UIView *topView;
@property (strong, nonatomic) IBOutlet UIView *bottomView;
@end
@implementation ViewController
- (IBAction)hideTop:(id)sender {
[UIView animateWithDuration:0.3 animations:^{
self.topView.hidden = YES;
self.bottomView.hidden = NO;
}];
}
- (IBAction)hideBottom:(id)sender {
[UIView animateWithDuration:0.3 animations:^{
self.bottomView.hidden = YES;
self.topView.hidden = NO;
}];
}
- (IBAction)showAll:(id)sender {
[UIView animateWithDuration:0.3 animations:^{
self.topView.hidden = NO;
self.bottomView.hidden = NO;
}];
}
@end