增加UITableView透明度,因为它滚动超出内容边缘

时间:2013-08-28 01:55:33

标签: ios uitableview

我正在尝试复制应用Snapchat所具有的酷炫UI功能。滚动超过表格视图的正常高度时,向上滚动越多,单元格变得越透明,如附图所示。目前,我在表格视图后面有一个背景图像,并且在其内容边缘之外滚动表格会显示该图像的一部分。然而,我不知道的是,当一个人进一步滚动表格时,如何使表格单元格逐渐变得更加透明。任何帮助将不胜感激。

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用属性alpha来创建透明视图。

使用 滚动开始时- (void)scrollViewDidScroll:(UIScrollView *) ScrollView更改alpha值,将alpha值设置为tableview或cell。在继续之前为表视图设置委托。

对于单元格你可以设置像这样cell.contentView.alpha=0.2;的alpha值我希望这可以解决如果有任何错误,我会看到我错误的地方

答案 1 :(得分:2)

所以这就是我使用@ Vijay_07回答的方式:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // Fades out top and bottom cells in table view as they leave the screen
    NSArray *visibleCells = [self.tableView visibleCells];

    CGPoint offset = self.tableView.contentOffset;
    CGRect bounds = self.tableView.bounds;
    CGSize size = self.tableView.contentSize;
    UIEdgeInsets inset = self.tableView.contentInset;
    float y = offset.y + bounds.size.height - inset.bottom;
    float h = size.height;


    if (y > h) {
        self.tableView.alpha = 1 - (y/h - 1)*4;
        for (UITableViewCell *cell in visibleCells) {
            cell.contentView.alpha = 1 - (y/h - 1)*4;
        }
    } else {
        for (UITableViewCell *cell in visibleCells) {
            cell.contentView.alpha = 1;
        }
        self.tableView.alpha = 1;
    }
}

同时

1)在故事板中确保使用表格下方的UIImageView

2)在viewDidLoad中执行此操作:

UIImageView *myImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SAMEIMAGE HERE!!.png"]];
[self.tableView setBackgroundView: myImage];
[self.tableView setBackgroundColor:[UIColor clearColor]];
[self scrollViewDidScroll:self.tableView];

3)在.h中添加<UIScrollViewDelegate>

你应该没事。