2013-07-29 2 views
2

На iOS6, я пытаюсь выполнить следующие действия:Добавление кнопки на правой стороне UISearchBar с AutoLayout: «Auto Layout еще требуется после выполнения -layoutSubviews»

UIButton *shortcutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[shortcutButton setTitle:@"Shortcut" forState:UIControlStateNormal]; 
[shortcutButton addTarget:self action:@selector(createShortcut) forControlEvents:UIControlEventTouchUpInside]; 
[shortcutButton setFrame:CGRectMake(0, 0, 70, 20)]; 
[self.searchBar addSubview:shortcutButton]; 

[shortcutButton setTranslatesAutoresizingMaskIntoConstraints:NO]; 

NSMutableArray *searchBarConstraints = [NSMutableArray array]; 

[searchBarConstraints addObject: [NSLayoutConstraint constraintWithItem:self.searchBar 
                   attribute:NSLayoutAttributeCenterY 
                   relatedBy:NSLayoutRelationEqual 
                   toItem:shortcutButton 
                   attribute:NSLayoutAttributeCenterY 
                  multiplier:1 
                   constant:0]]; 

[searchBarConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[shortcutButton]-35-|" 
                        options:0 
                        metrics:nil 
                        views:@{ @"shortcutButton" : shortcutButton , @"view" : self.view }]]; 
[self.searchBar addConstraints:searchBarConstraints]; 

Это приводит к сбою с ошибка:

*** Assertion failure in -[UISearchBar layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2380.17/UIView.m:5776 
Uncaught exception: Auto Layout still required after executing -layoutSubviews. UISearchBar's implementation of -layoutSubviews needs to call super. 

Я программно создать UISearchbar и пытается вставить UIButton на правой стороне SearchBar. Есть ли способ справиться с этим? Спасибо!

ответ

0

yahuuu Я нашел решение. Попробуйте установить логику ограничений установки в метод didMoveToSuperview. Я думаю, что это связано с ограничениями установки перед загрузкой всех ваших взглядов на иерархию. Или просто позвоните [super layoutSubviews]; после установки Ограничения

Смежные вопросы