【问题标题】:“Auto Layout still required after executing -layoutSubviews" on UINavigationBar subclass“在 UINavigationBar 子类上执行 -layoutSubviews 后仍需要自动布局”
【发布时间】:2015-07-09 11:58:49
【问题描述】:

我有一个 UINavigationBar 子类,我正在向其中添加一些 UIView。

我的 UIView 是根据我在 -[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的实现需要调用super。'

什么给了?我没有在任何地方覆盖 layoutSubviews?

附言。我尝试在添加约束之前调用 [self layoutIfNeeded](正如一些人在其他问题中所建议的那样),但它似乎不起作用。

【问题讨论】:

  • 那么 DDExpandableSearchBar 是什么?
  • UINavigationBar 子类
  • 但我的观点是:它存在。所以它在做 iOS 7 不喜欢的事情。
  • 我知道我正试图弄清楚那到底是什么:(。我在 iOS7 及更低版本的 UINavigationBar 中添加任何约束时遇到了困难
  • 你似乎养成了这个问题的习惯:stackoverflow.com/questions/25573813/…

标签: ios autolayout


【解决方案1】:

确保您设置:

[containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 

用于您的容器和子视图。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 2014-10-23
    • 2015-11-10
    • 2013-07-28
    • 2015-04-22
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多