我正在使用带有一些单元格的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];
我在viewWillLayoutSubviews中添加了这一行以支持方向:
[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.view.frame.size.height - 55, 50, 50)];
无论tableview内容视图偏移如何,我都需要将按钮设置为静态。有谁知道我做错了什么?
修改
在测试你的答案后,这解决了我的问题:
我在contentOffset.y
方法中将setFrame
添加到我的按钮viewWillLayoutSubviews
。我也尝试使用scrollView
委托但不需要它,因为第一种方法是完成所有工作。
- (void)viewWillLayoutSubviews
{
[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.tableView.contentOffset.y + self.view.frame.size.height - 110, 50, 50)];
}
就是这样,按钮保持静止。
按钮y起源中的额外减去110是因为我在视图中的高度和tabBar
。
感谢大家。你的答案非常有用。
答案 0 :(得分:4)
这里有2个选项。
转换为使用带有UIViewController
的{{1}}而不是UITableView
。它不应该做太多工作,然后您可以将UITableViewController
和按钮添加为根UITableView
的子视图。
如果您想继续使用UIView
,则需要实施UITableViewController
并在滚动表格时修改按钮的框架,使其显示为静态。您还可以在表格中添加scrollViewDidScroll:
,以便滚动内容超过自定义视图。
答案 1 :(得分:0)
如果您的tableview
只有1个部分,您也可以将此button
添加为此部分的标题
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
// Build my view and return it
}
- (CGFloat)tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger)section
{
// Return the height
}
答案 2 :(得分:0)
您的UITableViewController需要是tableView的scrollViewDelegate
。实施scrollViewDidScroll:
以更改按钮框架/位置。
一个例子是将按钮的origin.y设置为scrollView.contentOffset.y
应该使按钮与tableView的顶部齐平。