我想在我的桌面视图上方制作一个小玩家标签,所以它应该始终隐藏,只有一个小的1px字符串可见,就像在笔记应用程序中,当你滚动到顶部时,它应该出现,但保持顶部,而不是下降,就像表视图中的所有单元格一样。 它不能是标题,因为它总是可见的,它不能是一个单元格,因为它必须在顶部。 所以我想在笔记应用程序中做所有事情,我该怎么做? 谢谢
答案 0 :(得分:1)
这是我的想法。
UITableView
和UIImageView
作为基础UIView
的子视图。 UIImageView
实例是'string / stripe'的表示(无论你怎么称呼它)indexPath.row == 0
),始终使用标题单元格原型。对于其他细胞,请使用正常细胞原型。viewWillAppear
中,始终使用[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]
以下是我的示例代码段。 (它至少符合我的预期)
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.view addSubview:self.tableView];
self.overlayView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"stripe.png"]]; // This is an image with stripe with transparent background
self.overlayView.frame = CGRectMake(0, 0, 320, 10);
[self.view addSubview:self.overlayView];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// It is important that the table has enough rows to scroll. Otherwise, [UITableView scrollToRowAtIndexPath...] will not take effect.
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell * cell;
if(indexPath.row == 0)
{
// This is an example of header cell
cell = [tableView dequeueReusableCellWithIdentifier:@"topCell"];
if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"topCell"];
[cell.textLabel setText:@"This is the play tab"];
}
}
else
{
// This is an example of normal cell
cell = [tableView dequeueReusableCellWithIdentifier:@"normalCell"];
if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"normalCell"];
}
[cell.textLabel setText:[NSString stringWithFormat:@"Data at : %d", indexPath.row - 1]];
[cell.detailTextLabel setText:@"A normal cell."];
}
return cell;
}
答案 1 :(得分:0)
我相信只有一种方法可以达到这个效果。您应该使用scrollViewDidScroll:方法。你在桌子上放置一个子视图,并在每次桌面滚动时为它计算适当的坐标。描述所有可能的条件可能有点乏味,但没有什么棘手的。