3

我有一个 UITableViewController 视图一个 UITableView 我用 CGRectZero 框架分配/初始化:

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

我想在 tableView 中间添加一个视图(带有 UIActivityIndi​​catorView 和 UILabel 的加载视图),但我不知道如何定位它,因为我不知道 tableView 框架。

x = (self.tableview.frame.size.width - loadingView.frame.size.width) / 2.0;
y = (self.tableview.frame.size.height - loadingView.frame.size.height) / 2.0;
[loadingView setCenter:CGPointMake(x, y)];

我确实使用 CGRectZero 框架初始化了我的 tableView,因此它可以占据屏幕上可用的整个位置(确实如此),但我认为它的框架会更新或其他什么。

有任何想法吗 ?谢谢 !

4

3 回答 3

2

我设法以编程方式估计框架。我没有提到我的 tableView 介于导航栏和 tabBar 之间,所以这里是这个案例的代码:

CGFloat x = self.navigationController.view.frame.size.width;
CGFloat y = self.navigationController.view.frame.size.height -
            self.tabBarController.tabBar.frame.size.height;

self.tableView = [[UITableViewController alloc] initWithFrame:CGRectMake(0.0, 0.0, x, y)];

上面发布的用于 loadingView 定位的代码就像一个魅力!

当然,我愿意提供更好的解决方案

于 2010-04-02T13:00:12.137 回答
1

您可以为您的 LoadingView 提供对要显示的视图的引用。然后当它即将显示时,它可以检查它所代表的视图的框架以居中并匹配该视图并将其自身添加为 TableView 的父视图的子视图:

- (void)show
{
    self.center = targetView.center;
    [[targetView superview] addSubview:self];
}

另一种选择是让 LoadingView 使用 KVO 来监视 UITableView 的框架并相应地调整它自己的框架。

于 2010-04-27T12:56:09.120 回答
0

如果您的 View Controller 是 UITableViewController,那么表格视图的框架与 UIViewController 的框架相同。

为什么不把它放在 UIViewController 的视图的中心呢?

假设 self 是 UITableViewController:

loadingView.center = self.view.center;
于 2010-04-02T17:32:16.157 回答