iphone - 使用 UIView 动画时处理、删除和添加 UILabels

标签 iphone ios scroll uilabel uiviewanimation

我的时间线应用程序控件遇到了另一个问题。

我的TimelineView上有一定数量的UILabels,它继承自UIView。

我实现了一个滚动功能,它工作得很好。当一个元素到达底部时,它会被删除,并在第一个元素上方添加另一个 UILabel,反之亦然。类委托(delegate)中有一个标签数组,其中存储和删除所有 UIlabels(TimeLabels)。(对于以后实现很重要)小时/天等 - 动态加载,这样内存使用量就会很低)

现在我想在释放触摸手势(通过touchesEnded)后以一定的速度执行缓出动画,该速度计算正确。它与 UIView 动画配合得很好:

speed/=3;
for(TimeLabel *movingLabel in self.delegate.labels){
    NSLog(@"%i",movingLabel.time);
    [UIView beginAnimations:@"" context:NULL];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];


    CGRect movingFrame = [[movingLabel.layer presentationLayer] frame];
    NSLog(@"%f",movingFrame.origin.y);

    movingLabel.frame = CGRectMake(7, movingLabel.frame.origin.y+speed, 200, 25);

    [UIView commitAnimations];

}

所有标签的动画均已正确完成。

但是当我想扩展我的方法(上面未显示)时,以便当标签的位置低于应用程序的框架高度时,它不会被删除(即使使用presentationLayer,根据其他人们,可以在动画时获取当前位置。但它仅在记录时显示每个标签的结束位置...)。

所以我的问题:是否可以通过在动画时检查 UILabel 的位置来删除它?与该问题一样重要:是否可以插入新的 UILabel 和例如添加删除的标签层,以便启动的动画可以用新的标签恢复?

如果这些事情不可能:是否有另一种方法可以实现这样的缓出动画,而无需实现全新的动画?

很难解释它到底是什么样子,但我希望我能正确描述我的问题,并且有人能够帮助我。

问候,

阿斯加罗斯

最佳答案

听起来您只是希望动画在某些情况下在不同的 y 位置完成。执行此操作的简单方法(如果我正确理解问题)是计算要删除标签的 y 位置,在那里设置动画,然后添加...

[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];

你说“低于框架高度”。这是标签的 super View 的框架高度吗?如果是,将label.frame.origin.y的结束位置设置为label.superview.bounds.size.height

关于iphone - 使用 UIView 动画时处理、删除和添加 UILabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297181/

相关文章:

ios - 使用 FBDialogs 检测成功的 Facebook 帖子

iphone - 呈现 5 个选项且仍适合屏幕的最佳方式

c++ - Ncurses 不滚动 stdscr,导致终端行为异常

javascript - 双向无限滚动 - 向上和向下

ios - View 不会滚动到选定的元素 QuickDialog

ios - 如何对 NSMutableURLRequest 发出第二个请求?

ios - iOS8.1模拟器Safari看不到自定义键盘

vim - 如何在 Vim 中逐行而不是逐段滚动屏幕?

iphone - 带有自定义单元格的 UITableView 有两个按钮和两个标签

ios - 为什么 Keychain 比保存在文件中的加密数据更安全?