不知道为什么,我在iOS 7中的搜索栏正在留下一个合适的空间。它在iOS 6中没问题。
我知道它与部分索引有关,因为如果删除它,空间就会消失,但我不知道如何修复它。有什么想法吗?
答案 0 :(得分:7)
将UISearchBar嵌入到UIView中,然后将其添加为tableHeaderView。在故事板中以这种方式构建它对我有用。我猜iOS在tableHeaderView中调整了UISearchBar的大小,但是只留下了一个基本的UIView(并且没有在里面看它)。
你可能还想让部分索引透明,我用它做了:
[[UITableView appearance] setSectionIndexBackgroundColor:[UIColor clearColor]];
[[UITableView appearance] setSectionIndexTrackingBackgroundColor:[UIColor clearColor]];
答案 1 :(得分:6)
在出现更好的答案之前,我只需手动更改搜索栏的框架,如下所示:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
CGRect barFrame = self.searchBar.frame;
barFrame.size.width = self.view.bounds.size.width;
self.searchBar.frame = barFrame;
}
答案 2 :(得分:4)
使用SearchDisplayController时,iPhone 6 / 6Plus也遇到了同样的问题。 (使用Swift)
我尝试设置搜索栏的框架,但没有运气,但我注意到如果我点击UISearchBar的textField然后取消它,那么它将采用适当大小的视图。因此,我设法通过使用搜索调用viewController的ViewDidLoad中的代码来解决问题。
self.searchController.setActive(true, animated: false)
self.searchController.setActive(false, animated: false)
答案 3 :(得分:3)
<application
android:label="YOUR NAME APP"
android:allowBackup="true"
android:icon="@drawable/logo">
白边的原因是因为您的索引图层具有白色背景并位于搜索栏的顶部。这应该足够了。
答案 4 :(得分:2)
在UIView中添加搜索栏作为tableView的标题视图。将tableview的sectionIndexBackgroundColor
设置为清除颜色,因为它覆盖了标题。
使用iOS 7,7.1进行测试;
答案 5 :(得分:1)
因为表格视图在索引视图部分的右侧总是留下15px,所以你应该在重新加载表格视图后重新调整搜索栏的大小
<强>首先强>
self.tblData.sectionIndexBackgroundColor = [UIColor clearColor]; //(iOS >= 7 only)
作弊时间:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
[self performSelector:@selector(resizeSearchBar) withObject:nil afterDelay:0.01];
}
- (void) resizeSearchBar
{
CGRect frame = self.searchBar.frame;
if (frame.size.width < self.tblData.frame.size.width) {
frame.size.width = self.tblData.frame.size.width;
}
self.searchBar.frame = frame;
}
- (void) reloadTableData // call it anytime you want to reload table view
{
[self.tblData reloadData];
[self performSelector:@selector(resizeSearchBar) withObject:nil afterDelay:0.01];
}
<强>推荐强> 不要像我一样作弊,只是采取更简单的方式:
self.searchBar.searchBarStyle = UISearchBarStyleMinimal; // iOS >= 7 only
答案 6 :(得分:0)
我还在我的应用程序中附加了UISearcBar
,即使我的应用程序也支持旋转,也没有任何错误。
您可以尝试在UISearchBar
storyboard/xib
答案 7 :(得分:0)
我将搜索栏添加为顶级视图的子视图,而不是表视图。使用autolayout将搜索栏固定到顶部向导,并在搜索栏和表视图之间使用垂直空间约束0。
答案 8 :(得分:0)
使用方法viewDidLayoutSubviews
接受的解决方案会使屏幕闪烁。
相反,我所做的是创建一个UISearchBar
的子类,它只是这样做:
FullWidthSearchBar.h:
@interface FullWidthSearchBar : UISearchBar
@end
FullWidthSearchBar.m:
#import "FullWidthSearchBar.h"
@implementation FullWidthSearchBar
- (void)setFrame:(CGRect)frame {
frame.size.width = self.superview.bounds.size.width;
[super setFrame:frame];
}
@end
然后我将该课程分配到我的xib上的搜索栏:
答案 9 :(得分:0)
问题是正确的白色块,所以如果我们更改块颜色与搜索栏背景相同,它看起来很正常。
只是
if (IOS7) {
self.tableview.backgroundColor = [UIColor colorWithPatternImage:self.searchBar.backgroundImage];
}