2012-11-10 24 views
1

我想創建背景像http://disqus.com/繼續的背景,但我不能拿我的代碼是這樣創建於x軸連續型的UIImage動畫

continuesBackground =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"pattern"]]; 
    continuesBackground.frame=CGRectMake(0, 56, 320, 102); 
    continuesBackground.layer.zPosition=100; 
    [UIView animateWithDuration:5.0 
          delay:0.0 
         options:UIViewAnimationOptionCurveLinear 
        animations:^{ 
         continuesBackground.transform = CGAffineTransformMakeTranslation(0, 200); } 
        completion:^(BOOL finish) { 
         continuesBackground.transform = CGAffineTransformMakeTranslation(200, 0); 

        }]; 

嘗試後如何做的?我需要nstimer嗎?

+0

不要使用的NSTimer。 – 2012-11-10 05:43:26

+0

是嗎?任何想法來創建它? – Netra

+0

你提供的代碼是如何工作的?你遇到的錯誤是什麼? – 2012-11-10 05:52:02

回答

4

試試這個:

- (void)animateImageViewFromStartPosition:(CGPoint)aStartPosition toEndPosition:(CGPoint)aEndPosition; { 
    CGRect oldFrame = CGRectMake(aStartPosition.x, aStartPosition.y, continuesBackground.frame.size.width, continuesBackground.frame.size.height); 
    [continuesBackground setFrame:oldFrame]; 

    [UIView animateWithDuration:5.0f 
         delay:0.0f 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^(void){ 
        CGRect newFrame = continuesBackground.frame; 
        newFrame.origin = aEndPosition; 
        continuesBackground.frame = newFrame; 
        } 
        completion:^(BOOL finished){ 
        if(finished){ 
         [self animateImageViewFromStartPosition:aStartPosition toEndPosition:aEndPosition]; 
        } 
         }]; 
} 

然後調用該方法在viewDidLoad方法:

- (void)viewDidLoad; { 
    [super viewDidLoad]; 
    [self animateImageViewFromStartPosition:CGPointMake(0.0f, 56.0f) toEndPosition:CGPointMake(320.0f, 56.0f)]; 
} 

您可以輕鬆地修改這一個轉換,或任何你想要的,並能持續動畫無限期地進行。希望有助於!

+0

hy msgambel ...你能舉一些astartPosition和結束開始位置的例子嗎? – Netra

+0

當然。使用起點'CGPointMake(0.0f,56.0f)'和終點'CGPointMake(320.0f,56.0f)'。 – msgambel

+0

我已更改您的代碼...但爲什麼在線 continueBackground.frame.origin = end; <-error expression not assignable – Netra

0
- (void)animateImageViewFromStartPosition:(CGPoint)aStartPosition toEndPosition:(CGPoint)aEndPosition; { 
    CGRect oldFrame = CGRectMake(aStartPosition.x, aStartPosition.y,continuesBackground.frame.size.width, continuesBackground.frame.size.height); 
    [continuesBackground setFrame:oldFrame]; 

    [UIView animateWithDuration:5.0f 
        delay:0.0f 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^(void){ 
       CGRect newFrame = continuesBackground.frame; 
       newFrame.origin = aEndPosition; 
       continuesBackground.frame = newFrame; 
       } 
       completion:^(BOOL finished){ 
       if(finished){ 
        [self animateImageViewFromStartPosition:aStartPosition toEndPosition:aEndPosition]; 
       } 
        }]; 
} 

然後調用您的viewDidLoad方法的方法:

- (void)viewDidLoad; { 
    [super viewDidLoad]; 
    [self animateImageViewFromStartPosition:CGPointMake(0.0f, 56.0f) toEndPosition:CGPointMake(320.0f, 56.0f)]; 
    } 

談論這個代碼,請讓我知道在哪裏申請的代碼

+0

已經完成兄弟:) – Netra