【问题标题】:SearchBar rotation problemSearchBar 旋转问题
【发布时间】:2026-01-12 14:55:01
【问题描述】:

对于图片,我很抱歉,但我不知道如何更好地解释我的问题。 这是我启动应用程序时的视图,一切都很好。 这是当我旋转手机时,搜索栏顶部现在有点位于导航栏下方。 我开始搜索并取消它。 现在搜索栏没有被导航栏覆盖,但是导航栏的高度变小了。 当我回到垂直视图时,导航栏仍然很小,我在它下面有一个黑洞。 而且我找不到为什么会这样,有什么帮助吗?

这是我如何创建和添加搜索栏的代码:

- (void) loadView
{
    [super loadView];

    sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,320,45)];
    sBar.delegate = self;
    sBar.placeholder = @"Search";       
    self.tableView.tableHeaderView = sBar;

    UISearchDisplayController *searchDC = [[UISearchDisplayController alloc] initWithSearchBar:sBar contentsController:self];

    self.searchDisplayController = searchDC;    

    searchDC.delegate = self;
    searchDC.searchResultsDataSource = self;
    searchDC.searchResultsDelegate = self;

    [sBar release];
    [searchDC release]; 
}

我没有对导航或搜索栏的旋转方法进行任何更改。

【问题讨论】:

  • 图片没问题,但是没有code/xib就不行了
  • 我用如何添加搜索栏的代码更新了问题。

标签: iphone objective-c rotation uitableview uisearchbar


【解决方案1】:

验证您在以下位置的所有视图框架:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

如果它们不正确,请设置正确的框架。

【讨论】:

  • 我没有成功,但我修复了它以使其工作有所不同。在“shouldAutorotateToInterfaceOrientation”方法中,我添加了每当应用程序进入垂直/水平视图时,将导航栏大小更改为默认值。满足我的需求。
【解决方案2】:

最简单的解决方案是将UISearchBar 添加到UITableView 标头。在这种情况下,所有员工都将开箱即用。

在视图之间切换和旋转时,设置框架可能会导致 UISearchBar 宽度出现问题。我在基于标签的应用程序中遇到了这个问题。是的,测试用例不是那么容易重现,但它仍然是一个错误。

【讨论】: