在 tableview 中更改 searchBar 的宽度
Posted
技术标签:
【中文标题】在 tableview 中更改 searchBar 的宽度【英文标题】:Change width of searchBar in a tableview 【发布时间】:2012-06-06 13:06:34 【问题描述】:我意识到会有这样的 cmets 是重复的:
Change the Width of UISearchBars on a TableView
我认为不是。为什么我无法更改情节提要中的宽度?
我可以在宽度字段中写入任何值,但只要我按下返回/输入键值 320 就会恢复。
我也尝试过在加载方法中这样做:
searchBar.frame = CGRectMake(0, 0, 222, 45);
再次零成功,有谁知道如何做到这一点?我有一个索引表,右侧的字母与搜索文本字段重叠,看起来真的很难看。
更新
简单来说,这就是我想要的(概念上):
这是我设法制作的:
让我再次重申“我正在尝试调整搜索栏的大小,以使字母不会重叠”。
我尝试了 taus-iDeveloper 的建议,它确实调整了大小,但表格单元格/部分重叠了它。
也试过这个:
Changing the size of the UISearchBar TextField?
我设法在情节提要中调整了它的大小,但是当应用程序运行时,大小没有改变。
我完全不知道下一步该尝试什么..
更新 2
我接受了这个答案,因为它有一些解决方案的要素,我得出的结论是,仅使用情节提要以编程方式无法做到这一点,解决方案:
//Add the search bar uiview wrapper
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tableView.frame.size.width, 44.0)];
//Add the search bar and navigation item to fill in the remaining space
UINavigationBar *remainingSearchSpace = [[UINavigationBar alloc] initWithFrame:CGRectMake(290, 0.0, (self.tableView.frame.size.width-290), 44.0)];
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290, 44.0)];
searchBar.delegate = self;
[searchBarView addSubview:searchBar];
[searchBarView addSubview:remainingSearchSpace];
self.tableView.tableHeaderView = searchBarView;
【问题讨论】:
您能否确保在您的问题上添加更多相关标签? ('ios5' 在这里并不真正相关,但 'uisearchbar' 肯定是。虽然我可以自己重新标记它,但你可能不会注意到它。) 【参考方案1】:试试这个: 在 .h 文件中,
@interface SearchBarController : UIViewController <UISearchBarDelegate>
@property (nonatomic, retain) UISearchBar *mySearchBar;
在.m文件中,
@synthesize mySearchBar;
- (void)viewDidLoad
[super viewDidLoad];
self.title = NSLocalizedString(@"SearchBarTitle", @"");
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; // use the table view background color
self.mySearchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 44.0)] autorelease];
self.mySearchBar.delegate = self;
self.mySearchBar.showsCancelButton = YES;
self.mySearchBar.showsBookmarkButton = YES;
[self.view addSubview: self.mySearchBar];
// provide tint coloring and background image only if its available
if (![self.mySearchBar respondsToSelector:@selector(setSearchFieldBackgroundImage:forState:)])
// hide the segmented control allowing for various content options
self.contentOptions.hidden = YES;
希望这会有所帮助!
【讨论】:
【参考方案2】:使用这些UISearchDisplayDeletegate 函数:
- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
【讨论】:
【参考方案3】:您可以在搜索栏正下方显示索引,而不是将其显示在默认情况下搜索取消按钮所在的位置。
【讨论】:
以上是关于在 tableview 中更改 searchBar 的宽度的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 searchBar 和 tableview 之间添加空格?
如何从 SearchBar 中获取 Tableview 中所有项目的当前项目的索引
问:带有 JSON 文件的 SearchBar Tableview