【发布时间】: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