Ios 增加UITableView的传输性能,因为它';s滚动到内容边缘之外

Ios 增加UITableView的传输性能,因为它';s滚动到内容边缘之外,ios,uitableview,Ios,Uitableview,我正在尝试复制应用程序Snapchat所具有的一个很酷的UI功能。当滚动超过表格视图的正常高度时,向上滚动的次数越多,单元格变得越透明,如附图所示。目前,我的表格视图后面有一个背景图像,将表格滚动到其内容的边缘之外会显示该图像的一部分。然而,我不知道的是如何使表格单元格在进一步滚动表格时逐渐变得更透明。任何帮助都将不胜感激 您可以使用属性alpha创建透明视图 使用 -(void)scrollViewDidScroll:(UIScrollView*)ScrollView开始滚动时更改alpha值

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


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

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


对于单元格,您可以像下面这样设置alpha值
cell.contentView.alpha=0.2我希望这可以解决任何错误,我很高兴看到我犯了错误

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

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


对于单元格,您可以像下面这样设置alpha值
cell.contentView.alpha=0.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中添加


你应该会没事的。

这就是我用@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中添加


你应该没事。

你知道
UIView
属性
alpha
吗?如何使用
UIScrollViewDelegate
协议?您是否知道
UIView
属性
alpha
?如何使用
UIScrollViewDelegate
协议?这很好,但是我如何使它只在您到达表视图底部并尝试继续拖动时发生,但它不起作用,并且您看到后面的图像,但是你越是强迫它向下移动,单元格就变得越透明。这与代码中的self.table.alpha完全一样,我在“table”上得到一个错误,它说在对象类型ViewController上找不到属性“table”,所以我用tableView替换了它,它可以工作,但是当我开始滚动时它开始变得透明。问题是什么?所以这对ios6有效,但现在在ios7中,当我加载tableView时,我得到的是完全透明的单元格?有什么想法吗?那很好,但是我如何使它只在你到达表格视图的底部并尝试继续拖动时发生,但它不起作用,你看到后面的图像,但是你越是强迫它向下移动,单元格就变得越透明。这正是代码中所说的self.table.alpha我在“table”表示在对象类型ViewController上找不到属性“table”,所以我将其替换为tableView,它可以工作,但当我开始滚动时它开始变得透明。问题是什么?所以这对ios6有效,但现在在ios7中,当我加载tableView时,我得到的所有单元格都是完全透明的?有什么想法吗?