首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在-layoutSubviews子类上“执行UINavigationBar后仍然需要自动布局”

在-layoutSubviews子类上“执行UINavigationBar后仍然需要自动布局”
EN

Stack Overflow用户
提问于 2015-04-29 23:49:09
回答 1查看 730关注 0票数 3

我有一个UINavigationBar子类,我在其中添加了一些UIViews。

我的UIViews是根据我在-[UIView updateViewConstraints:]中定义的约束进行布局的。

代码语言:javascript
复制
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 (正如一些人在其他问题中所建议的那样),但它似乎不起作用。

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 00:02:25

确保设置:

代码语言:javascript
复制
[containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 

用于容器和子视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29956612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档