【问题标题】:Position a UIView at the middle of a UITableView with CGRectZero frame将 UIView 放置在带有 CGRectZero 框架的 UITableView 的中间
【发布时间】:2011-02-03 16:46:29
【问题描述】:

我有一个 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,因此它可以占据屏幕上可用的整个位置(确实如此),但我认为它的框架会更新或其他什么。

有什么想法吗?谢谢!

【问题讨论】:

    标签: iphone uitableview center frame


    【解决方案1】:

    你可以给你的 LoadingView 一个指向它要出现的视图的引用。然后当它即将显示时,它可以检查它所代表的视图的框架以居中并匹配该视图并将自己添加为 TableView 的父视图的子视图:

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

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

    【讨论】:

      【解决方案2】:

      如果您的 View Controller 是 UITableViewController,那么 table view 的框架与 UIViewController 的框架相同。

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

      假设 self 是 UITableViewController:

      loadingView.center = self.view.center;
      

      【讨论】:

        【解决方案3】:

        我设法以编程方式估计框架。我没有提到我的 tableView 是在 navigationBar 和 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 定位的代码就像一个魅力!

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-03
          • 2011-01-07
          • 1970-01-01
          • 2011-11-24
          • 2015-01-09
          相关资源
          最近更新 更多