我有一个UINavigationBar子类,我在其中添加了一些UIViews。
我的UIViews是根据我在-[UIView updateViewConstraints:]中定义的约束进行布局的。
NSDictionary *views, *metrics;
// search container constraints
[self addSubview:self.searchContainer];
self.searchContainer.translatesAutoresizingMaskIntoConstraints = NO;
views = NSDictionaryOfVariableBindings(_searchContainer);
metrics = @{@"h": @(SearchContainerExpandedHeight) };
self.searchContainerLeftSpacingConstraint = [NSLayoutConstraint constraintWithItem:self.searchContainer attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeft multiplier:1.0 constant:xMargin];
[self addConstraint:self.searchContainerLeftSpacingConstraint];
self.searchContainerRightSpacingConstraint = [NSLayoutConstraint constraintWithItem:self.searchContainer attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeRight multiplier:1.0 constant: 0 - xMargin];
[self addConstraint:self.searchContainerRightSpacingConstraint];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-24-[_searchContainer(h)]" options:0 metrics:metrics views:views]];
//etc在iOS8和更高版本上,这可以很好地工作。在iOS7上,我得到以下错误:
“在执行-layoutSubviews之后仍然需要自动布局。MyUINavigationBarSubclass的-layoutSubviews实现需要调用超级。”
怎么回事?我没有覆盖任何地方的layoutSubviews?
PS。我尝试过在添加约束之前调用self layoutIfNeeded (正如一些人在其他问题中所建议的那样),但它似乎不起作用。
发布于 2015-04-30 00:02:25
确保设置:
[containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 用于容器和子视图。
https://stackoverflow.com/questions/29956612
复制相似问题