Objective c UISearchBar带有范围按钮的最小样式错误?
当我将“最小样式”设置为“搜索栏”时,出现了一些错误。我的代码在这里:Objective c UISearchBar带有范围按钮的最小样式错误?,objective-c,uisearchbar,Objective C,Uisearchbar,当我将“最小样式”设置为“搜索栏”时,出现了一些错误。我的代码在这里: - (void)viewDidLoad { sc = [[UISearchController alloc] initWithSearchResultsController:nil]; sc.searchResultsUpdater = self; sc.delegate = self; sc.dimsBackgroundDuringPresentation = NO; sc.sear
- (void)viewDidLoad
{
sc = [[UISearchController alloc] initWithSearchResultsController:nil];
sc.searchResultsUpdater = self;
sc.delegate = self;
sc.dimsBackgroundDuringPresentation = NO;
sc.searchBar.delegate = self;
self.definesPresentationContext = YES;
[sc.searchBar setPlaceholder:@"Search"];
[sc.searchBar setSearchBarStyle:UISearchBarStyleMinimal];
[sc.searchBar sizeToFit];
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
sc.searchBar.delegate = self;
self.tableView.tableHeaderView = sc.searchBar;
}
结果(触摸内部之前):
当我触摸搜索栏时,它的开始看起来很正常。其他搜索栏样式正常工作
编辑
这样尝试;范围按钮出现在图片的第二个类似位置,然后消失
-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
}
edit2
当我将[sc.searchBar setshowscopebar:YES]
放入viewDidLoad
方法时,我得到了第三个版本(触摸前搜索栏下的项目):
触摸界面恢复正常后:
苹果公司关于以下方面的文档:
此属性可与barStyle
一起使用。风格
UISearchBarStyleMinimum
不提供默认背景色或图像
但如果按此自定义,则将显示一个
因此,当您将searchBarStyle
设置为UISearchBarStyleMinimum
时,它会删除背景图像和颜色,因此基本上是透明的。现在要显示范围栏按钮,您必须在设置标题之前将showscopebar
属性设置为YES
。因此:
[sc.searchBar setShowsScopeBar:YES];
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
让我们从以下内容开始:为什么要将其设置为
UISearchBarStyleMinimal
?那么,为什么要设置[sc.searchBar sizeToFit]代码>?这是我第一次看到这个。你使用的约束有问题吗?因为我可以,我猜@实际上,ArminM应用程序用最少的样式看起来要好得多。您正在设置sc.searchBar.delegate=self代码>也是两次。。。也许你应该先清理你的代码,注释掉不必要的行,看看会发生什么?但是。。。从你在问题中向我展示的内容来看,情况并没有好到哪里去!根据苹果的文档:“样式UISearchBarStyleMinimal不提供默认的背景颜色或图像,但如果按此进行定制,则会显示。”这是唯一的区别。@OlegSobolev我自己尝试过,解决方法是在设置范围栏按钮标题之前,将showscopebar
属性设置为YES
。检查新答案。你得到和我一样的结果了吗@阿米尼。没有[sc.searchBar设置showscopebar:YES]代码>它看起来和你的结果一模一样。