-2

私のプログラムでは、アニメーションのためにスワイプするときに画像の置き換えを設定しました

cate1.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. アニメーションにラベルのフレーム ウェイを使用すると問題が発生しますか? もっと良い方法が知りたいです。

  3. label.frame=CGRectMake(~,~,~,~) vs [label setFrame:CGReckMake(~,~,~,~)] 違いはありますか? 何?

4

1 に答える 1

0

1. アニメーション画像

image プロパティを使用して画像を変更するアニメーションを作成することはできません。ある画像と別の画像の間で画像をフェードさせたい場合は、同じフレームの imageView の上に 2 番目の 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:...];まったく同じことです。コードを書く 2 つの異なる方法。

于 2012-05-12T09:28:49.660 に答える