在ios中为标签制作摇动效果?

前端之家收集整理的这篇文章主要介绍了在ios中为标签制作摇动效果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用标签的摇动效果我在桌面视图中按下单元格时调用了动画但是它不起作用.如果我在cellForRowAtIndexPath中调用动画:(NSIndexPath *)indexPath它正在工作但是如果我在didSelectRowAtIndexPath中调用它:(NSIndexPath *)indexPath它不起作用.任何人都可以帮助我???提前致谢
-(void)shakeAnimation:(UILabel*) label {
    const int reset = 5;
    const int maxShakes = 6;

    //pass these as variables instead of statics or class variables if shaking two controls simultaneously
    static int shakes = 0;
    static int translate = reset;

    [UIView animateWithDuration:0.09-(shakes*.01) // reduce duration every shake from .09 to .04
                          delay:0.01f//edge wait delay
                        options:(enum UIViewAnimationOptions) UIViewAnimationCurveEaseInOut
                     animations:^{label.transform = CGAffineTransformMakeTranslation(translate,0);}
                     completion:^(BOOL finished){
                         if(shakes < maxShakes){
                             shakes++;

                             //throttle down movement
                             if (translate>0)
                                 translate--;

                             //change direction
                             translate*=-1;
                             [self shakeAnimation:label];
                         } else {
                             label.transform = CGAffineTransformIdentity;
                             shakes = 0;//ready for next time
                             translate = reset;//ready for next time
                             return;
                         }
                     }];
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self shakeAnimation:cell.MyHomeMenuCountlabel];

}

解决方法

有两种方法可以做到这一点:

1.试试这个功能

NSArray *arrIndexPath = [NSArray arrayWithObject:indexPath];
[dropTable reloadRowsAtIndexPaths:arrIndexPath withRowAnimation:UITableViewRowAnimationFade];

在didSelectRowAtIndexPath函数中.

仅在cellForRowAtIndexPath中制作动画.

2.在cellForRowAtIndexPath中为您的单元格分配标记属性.

cell.tag = indexPath.row.

在didSelectRowAtIndexPath中:

然后使用table的子视图,获取等于indexPath.row的cell.tag并获取相同单元格的引用,然后执行动画:

for (MyHomeViewCell *cell in [table subviews]) { // change name of table here 
  if ([cell isKindOfClass:[MyHomeViewCell class]]) { 
    if (cell.tag == indexPath.row) { 
        [self shakeAnimation:cell.MyHomeMenuCountlabel]; 
    } 
  } 
}
原文链接:https://www.f2er.com/iOS/328584.html

猜你在找的iOS相关文章