SearchBar がナビゲーション バーのすぐ下にあることを確認する場合は、次のように autolayout を使用します。
self.searchBar = [[UISearchBar alloc] init];
self.searchBar.translatesAutoresizingMaskIntoConstraints = NO;
self.searchBar.delegate = self;
self.searchBar.showsCancelButton = NO;
[self.view addSubview:self.searchBar];
id topLayoutGuide = self.topLayoutGuide;
UISearchBar *searchBar = self.searchBar; //updated
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[searchBar]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(searchBar)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topLayoutGuide][searchBar]" options:0 metrics:0 views:NSDictionaryOfVariableBindings(searchBar, topLayoutGuide)]];
編集:
いろいろ調べたところ、ギャップではないことがわかりました。これは、Apple が物事を場所に分割するために使用するイメージです。あなたがアプローチできる多くのオプションがあります
1.) 検索と破棄 - UIImageView を見つけて、バーから削除します。
iOS 7 で UIToolbar のヘアラインを削除する
2.) バーのカスタム背景を設定する
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];