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方法以将内容设置为不可见,然后当你需要它的时候,让它再次可见。谢谢,它并没有按照我想要的方式工作,但它让我找到了我自己的方式。