【问题标题】:I set images for animation . For Animation in ios. Is it a better way?我为动画设置图像。用于 ios 中的动画。这是更好的方法吗?
【发布时间】:2012-05-12 07:16:49
【问题描述】:

在我的程序中,我设置了滑动动画时的替换图像

cate 1.png -> cate2.png->cate3.png->cate1.png-> ~

并使用 setframe 设置更改标签的框架。

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
  int offsetx=(int)scrollView.contentOffset.x;

if(offsetx>0 && offsetx<20)
{

    UIImage * image=[UIImage imageNamed:@"cate1.png"];  
    cateImageview.image=image;

    UIFont * font=[UIFont systemFontOfSize:14];
    [gameLabel setFont:font];

    [gameLabel setFrame:CGRectMake(140,18,50,50)];


    return ;

}

 if(offsetx>20 && offsetx<40)
{

    UIImage * image=[UIImage imageNamed:@"cate2.png"];  
    cateImageview.image=image;

    [gameLabel setFrame:CGRectMake(122,16,50,50)];

    return ;

}
    if(offsetx>40 && offsetx<60)
    {

        UIImage * image=[UIImage imageNamed:@"cate3.png"];  
        cateImageview.image=image;

        [gameLabel setFrame:CGRectMake(113,14,50,50)];

        return ;

    }

    if( offsetx>60 && offsetx<80)
    { 
        UIImage * image=[UIImage imageNamed:@"cate1.png"];  
        cateImageview.image=image;

        [gameLabel setFrame:CGRectMake(103,12,50,50)];

        return ;

    }

   if( offsetx>80 && offsetx<100)
   {

    UIImage * image=[UIImage imageNamed:@"cate2.png"];  
    cateImageview.image=image;

    [gameLabel setFrame:CGRectMake(92,10,50,50)];

       return ;

   }

   if( offsetx>100 && offsetx<120)
   {

    UIImage * image=[UIImage imageNamed:@"cate3.png"];  
    cateImageview.image=image;

    [gameLabel setFrame:CGRectMake(83,8,50,50)];

       return ;

   }

      .
      .
      .

 if(offsetx >820 && offset <840)
      .
      .
 }
  1. 使用替换图像方式制作动画有问题吗?我想知道一个更好的方法。

  2. 使用label的frame方式做动画有问题吗?我想知道一个更好的方法。

  3. label.frame=CGRectMake(~,~,~,~) vs [label setFrame:CGReckMake(~,~,~,~)] 有区别吗?什么?

【问题讨论】:

    标签: ios animation frame


    【解决方案1】:

    1。动画图像

    您不能使用 image 属性为更改图像设置动画。如果您想在一个和另一个之间淡化图像,您可以在同一帧上添加第二个 imageView,在您的 imageView 上方并将其不透明度从 0 设置为 1。然后当动画完成时,删除旧的 imageView 或更改图像并删除动画 imageView。

    2。动画帧

    帧是一个动画属性,但简单地设置一个新值不会产生动画。使用框架进行动画处理没有问题。查看 UIView 动画以获得类似这样的简单动画:

    [UIView animateWithDuration:yourDurationInSeconds animations:^{
        // Changing the frame in here will cause the frame to animate over the specified duration
        [label setFrame:yourNewFrame];
    }];
    

    3。点符号与否

    label.frame = ...;[label setFrame:...]; 完全一样。只是两种不同的代码编写方式。

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多