gpt4 book ai didi

ios - 如何在使用 iOS7 的 UINavigationBar 时以编程方式定位 UITableView?

转载 作者:行者123 更新时间:2023-11-28 22:20:21 26 4
gpt4 key购买 nike

我有一个非常常规的 UIViewController,它是 UINavigationController 层次结构的一部分,这自然使 View 在顶部。众所周知,iOS7的导航栏与之前的版本有很大不同。

如果我将 UITableView 拖到 Storyboard 中的 View 中,那么 TableView 的“框架”将覆盖整个 View (即 [tableView setFrame:self.view.frame] ;)。甚至在 NavigationBar 后面。这使得如果我滚动,内容将通过栏隐约可见。与大多数人相反,我实际上喜欢这个。

在我当前的 View Controller 中,我想以编程方式创建 UITableView 并将其作为 subview 放置在这里。但是,我无法通过这种方式达到相同的效果。

我试过了

UITableView *table = [[UITableView alloc] initWithFrame:self.view.frame];
[self.view addSubview: table];

这使得“顶部滚动点”留在导航栏后面。想象一下 tableView 中的单个单元格,通过顶部栏隐约可见。如果我向下滚动,它会在它后面弹出。这是默认的“最高位置”。

我也试过

CGRect frame = CGRectMake(0, 'nav.y+nav.height', self...width, self...height-y);    
UITableView *table = [[UITableView alloc] initWithFrame:frame];
[self.view addSubview: table];

简单地将 TableView 放在 UINavigationBar 下方的矩形中,但这样我就不会在栏后面获得滚动透明效果。

我还尝试了第一个示例:

[tableView setContentOffset:CGPointMake(0, 'below navbar')];

这使它准确地停留在我希望它停留的位置,但只要我触摸它(滚动并释放),它就会向上滚动回到导航栏后面,并停留在那里。

实现这种效果的程序化解决方案是什么?每次向上滚动太远时是否都必须设置偏移量,还是有更简单的解决方案?除了这种 iOS7 风格,我想他们会添加类似 [tableView setVisibleFrame:] 之类的东西..?

最佳答案

像往常一样在 Storyboard 中添加表格,但请确保您已将其连接到 socket (我们现在将其称为 _tableView)。

然后在您的 View Controller 的 -viewDidLoad 中将顶部插入设置为状态栏和导航栏:

`self.tableView.contentInset = UIEdgeInsetsMake( (self.navigationController.navigationBar.frame.origin.y + self.navigationController.navigationBar.frame.size.height), 0, 0, 0);'

这将确保所有单元格都可见,但也会用白色填充导航栏后面的区域,这样导航栏就不会变成灰色。

关于ios - 如何在使用 iOS7 的 UINavigationBar 时以编程方式定位 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575805/

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