gpt4 book ai didi

iphone - UISearchBar 和 UINavigationItem

转载 作者:行者123 更新时间:2023-12-03 20:24:47 24 4
gpt4 key购买 nike

我似乎无法让 UISearchBar 在导航栏中从最左侧定位到最右侧。在 -(void)viewDidLoad 方法中,我有以下代码:

UISearchBar *sb = [[UISearchBar alloc] initWithFrame:self.tableView.tableHeaderView.frame];
sb.delegate = self;
self.navigationItem.titleView = sb;
[sb sizeToFit];
[sb release];

当您构建并运行时,乍一看看起来很好。然而,仔细观察,您可以看出左侧有一个边距/空间。从总体上看,这不是什么大问题,但当我点击搜索栏开始搜索时,我会将取消按钮动画化到 View 中。由于搜索栏位置稍微靠右,因此动画很不稳定,并且取消按钮从末端脱落,如下所示: link text

似乎 UINavigationItem 就像一个包含三个单元格的表格,其中第一个和最后一个单元格上有一个填充,我无法删除 - 似乎也没有办法将它们全部“合并”在一起并且然后将搜索栏放在那里。我知道这种外观是可能的,因为 AppStore 搜索在导航栏中有一个搜索栏,并且它一直延伸到边缘。有人知道如何让搜索栏一直到边缘,以便我的滑入取消按钮动画能够正常工作吗?

最佳答案

实际上,有一个非常简单的解决方案。您所要做的就是为后面的项目创建一个零宽度 View :

UIView *hackView = [[UIView alloc] initWithFrame:CGRectZero];
UIBarButtonItem *hackItem = [[UIBarButtonItem alloc] initWithCustomView:hackView];
self.navigationItem.backBarButtonItem = hackItem;
[hackView release];
[hackItem release];

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[searchBar sizeToFit];
self.navigationItem.titleView = searchBar;
[searchBar release];

请务必在您的 loadView 方法中执行此操作,而不是 init。我不确定为什么这会产生影响,但确实如此。

显然这是关于时机的。将它放在 loadView 中对我来说不再起作用,但是将它放在 viewWillAppear 中可以工作(当然,进行检查,以便只完成一次)。我认为这个想法是在一些初始化完成后设置 titleView。

关于iphone - UISearchBar 和 UINavigationItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1614687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com