Ios 如何在短时间内将新插入的UITableViewCell的alpha设置为0

Ios 如何在短时间内将新插入的UITableViewCell的alpha设置为0,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,我正在创建一种效果,它将UITableView向下滚动到底部,创建一个UILabel并将其放置在用户输入文本的UITextView顶部,然后将该UILabel动画化到新的UITableView单元格的框架上。这与在iOS7的默认短信应用程序中发送新消息时使用的效果大致相同。除了一个部分,我把所有的东西都记下来了,那就是将新创建的UITableViewCell的alpha设置为0,这样当UILabel在其中设置动画时,它看起来像是空白。我尝试了以下方法: NSIndexPath *indexPat

我正在创建一种效果,它将
UITableView
向下滚动到底部,创建一个
UILabel
并将其放置在用户输入文本的
UITextView
顶部,然后将该UILabel动画化到新的
UITableView单元格的
框架上。这与在iOS7的默认短信应用程序中发送新消息时使用的效果大致相同。除了一个部分,我把所有的东西都记下来了,那就是将新创建的
UITableViewCell
的alpha设置为0,这样当
UILabel
在其中设置动画时,它看起来像是空白。我尝试了以下方法:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_randomData.count-1 inSection:0];
CustomCell *cell = (CustomCell*)[self.tableView cellForRowAtIndexPath:indexPath];
[cell.textLabel setAlpha:0.0f];
这里的问题是,由于
UITableView
向下滚动到底部并插入单元格,因此每当我尝试访问特定的
UITableView单元格时,它都是空的。如果有帮助,动画将通过以下方式触发:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
这是因为一旦用户点击“发送”按钮,我将使用
ScrollToRowatineXpath
将用户带到tableview的底部:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_randomData.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
CustomCell * cell = [[self.tableView visibleCells] lastObject];
[cell.contentView setAlpha:0.0f];
我尝试将
单元格中的alpha设置为rowatinexpath
,但由于所有单元格都是在
UITableView
向下滚动时重新创建的,因此我也将所有重用的
UITableViewCell的
alpha设置为0,这显然不起作用

总之,我只想将新创建单元的alpha设置为0,然后在动画完成后将其设置回1。有什么想法吗


谢谢

首先,您应该在中设置alpha和动画 以下方法(请参阅文档:)

为了达到类似的效果,我必须在模型中存储一个值,告诉我我的单元格是否是新创建的单元格,并在上面的函数中使用它,如下所示:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    MyModelItem* item = [MyModel itemAtIndex:indexPath.row];
    if(item.wasJustCreated) {
        item.wasJustCreated = NO;
        cell.alpha = 0.0;
        [UIView animateWithDuration:0.4 animations:^{
            cell.alpha = 1.0;
        }];
    }
}

您必须在单元模型项中添加一个字段,如“wasJustCreated”,该字段已初始化为NO。它可能不是最优雅的解决方案,但可以按预期工作,并且很容易实现

最简单的方法是:

1.)按下“发送”按钮时,禁用用户交互

2.)在
ScrollViewDiEndScrollingAnimation
中,按下按钮后,添加对象,并将用户带到tableview的最底部:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_randomData.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
CustomCell * cell = [[self.tableView visibleCells] lastObject];
[cell.contentView setAlpha:0.0f];
3.)将动画的代码放在该代码的正下方


4.)将单元格的alpha设置回1,并在动画的完成块中重新打开用户交互。

在单元格中对行进行测试,如果单元格=最后一个单元格,则单元格的alpha为0,或者子类uitableviewcell并输入initialize方法以将内容设置为不可见,然后当你需要它的时候,让它再次可见。谢谢,它并没有按照我想要的方式工作,但它让我找到了我自己的方式。