向 UITableViewController 添加子视图

Fer*_*oso 0 objective-c uitableview ios

我正在使用带有一些单元格的 UITableViewController。我的问题是我需要在 tableview 前面有一个静态按钮,但是当我添加按钮视图时,它会随着 tableview 滚动而上下移动。
这是我在 viewDidLoad 中的代码:

[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.view.frame.size.height - 55, 50, 50)];
[button setBackgroundColor:[UIColor redColor]];
[[button layer]setMasksToBounds:YES];
[[button layer]setCornerRadius:25.0];

[self.view addSubview:button];
[self.view bringSubviewToFront:button];
Run Code Online (Sandbox Code Playgroud)

我在 viewWillLayoutSubviews 中添加了这一行以支持方向:

[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.view.frame.size.height - 55, 50, 50)];
Run Code Online (Sandbox Code Playgroud)

无论 tableview 内容视图偏移量如何,我都需要使按钮保持静态。有谁知道我做错了什么?

编辑

在测试您的答案后,这解决了我的问题:

我将contentOffset.y加到我的按钮的setFrameinviewWillLayoutSubviews方法中。我也尝试使用scrollView委托,但不需要它,因为第一种方法完成了所有工作。

    - (void)viewWillLayoutSubviews
{
    [button setFrame:CGRectMake(self.view.frame.size.width - 55, self.tableView.contentOffset.y + self.view.frame.size.height - 110, 50, 50)];
}
Run Code Online (Sandbox Code Playgroud)

就是这样,按钮保持静态。

按钮 y 原点中的额外负 110 是因为tabBar我认为高度和 a 。

谢谢大家。你的回答真的很有帮助。

Dim*_*ima 5

您在这里有 2 个选择。

  1. 转换为使用UIViewControllerUITableView代替使用UITableViewController。它应该没有太多工作,然后您可以将您的UITableView和您的按钮添加为 root 的子视图UIView

  2. 如果您想继续使用UITableViewController,则需要在scrollViewDidScroll:滚动表格时实现和修改按钮的框架,以使其显示为静态。您可能还想向contentInset表格中添加,以便您可以滚动内容超过您的自定义视图。