私は一番上に検索バーとビューの残りの部分を埋めるテーブルビューを持つビューコントローラを作っています。1つのサブビューのサイズを変更した後、自動レイアウトをトリガする方法はありますか?
今、私が設定できるように検索バーの可視性を必要とします。私がしていることは次のようなものです:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
if (!(self.bShowSearchBar)) {
[self.searchBar setHidden:YES];
CGRect frameSearchBar = self.searchBar.frame;
frameSearchBar.size.height = 0;
[self.searchBar setFrame:frameSearchBar];
NSLog(@"self.searchBar.frame: %@", NSStringFromCGRect(self.searchBar.frame));
NSLog(@"self.tableView.frame: %@", NSStringFromCGRect(self.tableView.frame));
}
}
検索バーを隠すとテーブルビューの位置が正しく調整されません。 NSLogは、テーブルビューのフレームを調整することを拒否しながら、検索バーの枠がすでに変更されて示しています
2017-03-27 15:37:41.204413 App[2071:954793] self.searchBar.frame: {{0, 0}, {375, 0}}
2017-03-27 15:37:41.204675 App[2071:954793] self.tableView.frame: {{0, 44}, {375, 623}}
をそれだけで正しく表示されません。検索バーの場所はまだ保持されています。
また、私は0に検索バーの高さを設定した直後
(1) [self.tableView setNeedsLayout];
[self.tableView layoutIfNeeded];
(2) [self.view layoutSubviews];
てみましたが、それらのどれも機能しません。
したがって、1つのサブビューのサイズを変更した後、自動レイアウトを再起動するにはどうすればよいですか?前もって感謝します。
自動レイアウトを使用している場合は、フレームを変更しないでください。制約を変更する – Paulw11