在UITableView中固定UIImage在顶部

4
当我在原型单元格的顶部添加一个UIImage时,图片不会保持固定。因此当我滚动UITableView时,顶部也随之滚动。
有没有什么办法可以将UIImage视图添加为固定的(不可移动)?
谢谢!

1
put it inside table header - iRiziya
https://dev59.com/PWPVa4cB1Zd3GeqP5WUD#10423468 - user1199624
@FrequencyMatched 它也会滚动。我建议将它放在一个 UIImageView 中,作为包含图像和表格的主视图(main view)的子视图(subview),并将其放置在 UITableView 的顶部。 - ryancrunchi
@ryancrunchi 如果你将UIImageView作为一个section header(以编程方式),它不会滚动。 - iRiziya
1
如果它是节标题,则在第二个部分之前不会滚动,但如果您在顶部滚动(例如下拉刷新),它将滚动。如果它是表视图标题,则会像任何其他单元格一样滚动。 - ryancrunchi
4个回答

1

UITableView是UIScrollView的一个子类。所以我们可以使用scrollViewDidScroll方法来执行这个任务。

将imageView固定在顶部很简单。但是你需要在scrollViewDidScroll方法中获取你的imageView的引用。

func scrollViewDidScroll(scrollView: UIScrollView) {

    if scrollView==self.tableView {

        var frame = yourImageView.frame

        if scrollView.contentOffset.y > 0 {

            frame.origin.y = scrollView.contentOffset.y
            yourImageView.frame = frame

        } else if scrollView.contentOffset.y == 0 {

            frame.origin.y = 0
            yourImageView.frame = frame
        }
    }
}

1

你需要按照以下步骤进行:

  1. 将您的基本视图保持为普通的UIView。
  2. 在(0,10)处添加图像作为子视图。
  3. 在(0,10+margin)位置添加一个UITableView。

0
你可以创建一个 UIView 的子类并且在 hit-test 失败时将所有的触摸事件传递给下面的表视图,这样就可以在图片视图内使用滚动手势而不会移动它。
在你的实现中:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    UIView *view = [super hitTest:point withEvent:event];

    if (view == self) {

        view = nil;

    }

    return view;
}

将您的UIImageView放置在表视图上方,即将其添加到表视图的父视图中(确保启用用户交互并在故事板中设置类为您的子类)。


0

通过以下方法将图像设置在UIImageView中或添加为UITableView标题的UIView背景。抱歉,下面的代码是用于Swift的,您也可以找到Objective C的代码。

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接