如何“锁定”视图以滚动表格单元格?

时间:2015-10-08 16:01:43

标签: ios objective-c uitableview

我希望实现类似Skype for iOS的功能,基本上是在滚动时保持个人资料旁边的个人资料图片。

我所做的是创建一个UITableViewHeaderFooterView子类,并在实际帧的边界之外添加UIImageView

UITableViewHeaderFooterView子类

- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithReuseIdentifier:reuseIdentifier];
    //Check "y" position
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 20, 40, 40)];
    imageView.image = [UIImage imageNamed:@"profile"];
    imageView.backgroundColor = [UIColor redColor];
    [self.contentView addSubview:imageView];

    return self;
}

UITableViewDelegate对象

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 20;
}

如您所见,imageView准确地从标题完成的位置开始。

这实际上(有点')有效,但问题是当滚动时,下一个图像没有正确地“推”第一个图像,它们重叠(这完全有道理)。

检查以下video以更好地了解问题

我试图查看网络,但显然我没有提出确切的术语:)。有什么想法吗?

更新 作为更新,我想要的是this,唯一的区别是我想知道是否可以使用UITableHeaderFooterView

1 个答案:

答案 0 :(得分:0)

嗯,一个简单的问题,你的UIImageView不在标题的框架上,它应该在标题范围内

测试它的一种简单方法是:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 80;
}

这将在每个部分之间产生80像素的间隙,这是另一个需要解决的问题,也许为tableView设置内容插入就足够了。