有两个 View headerView 和 footterView。我希望将 View 一个放在另一个下面。 我的意思是说 headerView 在上面,footerView 在 headerView 下面。
UIView *mainview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
headerView = [[[NSBundle mainBundle] loadNibNamed:@"BaseHeader" owner:self options:nil] objectAtIndex:0];
footterView = [[[NSBundle mainBundle] loadNibNamed:@"BaseFotter" owner:self options:nil] objectAtIndex:0];
self.view = mainview;
[mainview addSubview:headerView];
[mainview addSubview:footterView];
我试过如下添加约束
NSDictionary *viewsDictionary =
NSDictionaryOfVariableBindings(headerView,footterView);
NSLayoutConstraint *constraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView]-[footterView]|" options:0 metrics:nil views:viewsDictionary] objectAtIndex:0];
NSLayoutConstraint *mconstraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView(==footterView)]|" options:0 metrics:nil views:viewsDictionary] objectAtIndex:0];
[mainview addConstraint:constraint];
[mainview addConstraint:mconstraint];
但总是只有 footerView 单独显示在屏幕上。 如果我按以下顺序添加 View ,则始终显示 HeaderView。
[mainview addSubview:footterView];
[mainview addSubview:headerView];
在两个 xib(BaseHeader.xib 和 BaseFotter.xib)中都检查了 AutoLayout。我需要在 xib 中做更多的事情吗?
最佳答案
更改您的约束,将代码添加到:
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView]-[footerView]|"options:0 metrics:nil views:viewsDictionary];
NSArray *mconstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView(==footerView)]|"options:0 metrics:nil views:viewsDictionary];
[mainview addConstraints: 约束]; [mainview addConstraints:mconstraints];
关于ios - 自动布局以编程方式生成的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015411/