我有以下例程來簡單地在屏幕上爲圖像設置動畫效果。簡單移動uiimageview代碼不動畫
-(void)animateGrasland {
[UIView animateWithDuration:5 delay:0.0 options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect newFrame = CGRectMake(100,100,1024,768);
self.grasland.frame = newFrame;
}
completion:^(BOOL finished) {
}
];
}
我想在加載視圖後立即開始動畫。並持續5秒。所以我一直在試驗幾個選項來調用函數。
選項I - 此選項會立即在新位置顯示圖像,無動畫!
- (void)viewDidLoad {
[super viewDidLoad];
[self animateGrasland];
}
選項II - 此選項將圖像動畫化到新的位置。答對了。
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(animateGrasland) userInfo:nil repeats:NO];
}
我有時間玩一點延遲,動作開始時間爲0.001秒。如果持續時間爲0.0001秒,則圖像立即顯示在新位置,因此無需動畫。我期望解析viewDidLoad(和其他後臺例程導致這一點)的持續時間。
因此,因爲在故事板中設置的初始位置(0,0)在viewDidLoad期間更新,所以不會觸發動畫。動畫立即移動到完成狀態。
開始它,您希望動畫持續5秒或您想要在5秒後執行動畫嗎? – Divya
嘗試移動代碼'CGRect newFrame = CGRectMake(0,0,1024,768); self.grasland.frame = newFrame;'到其他地方,比如'viewDidLoad'方法。 – GoGreen
我剛剛在正常的UIView上試過你的代碼,它按預期工作 - 動畫持續5秒。你在代碼中運行這個動畫嗎? self.grasland是一個UIView對象嗎? – tanzolone