我有用於iPad的選項卡式應用程序。在第一個標籤上,我有一個單獨的菜單,其中有一個指針,用於突出顯示當前活動的菜單按鈕點擊按鈕後,指針(一個UIImage)被動畫到位。回到頁面後動畫圖像位置不同返回頁面
問題是,當你離開高亮顯示的圖像上的任何按鈕,這不是原來的/默認按鈕,並移動到另一個選項卡中的應用程序,然後再回來,圖像已移回默認位置。但是,當您點擊另一個按鈕時,圖像朝錯誤的方向移動。我認爲這是因爲圖像後退了,但舊的座標被保留,或者相反?與直接在iPad上相比,它在模擬器中有點受挫,並且表現出不同的測試。
我想我需要開始與絕對座標,並與他們堅持整個過程。但是我無法理解如何用CGAffine函數實現它。
這裏是我當前的代碼
- (IBAction)diplayForm1:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
buttonHighlightImage.transform = CGAffineTransformMakeTranslation(0, 0);
[UIView commitAnimations];
}
- (IBAction)diplayForm2:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
buttonHighlightImage.transform = CGAffineTransformMakeTranslation(0, 80);
[UIView commitAnimations];
}
- (IBAction)diplayForm3:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
buttonHighlightImage.transform = CGAffineTransformMakeTranslation(0, 160);
[UIView commitAnimations];
}
編輯 - - -
@Mundi我想你的建議的代碼。我通過newFrame假設你的意思是定義一個新的UIImageView和屬性,我在.h(我稱之爲'sfh')中做了,然後在.m中使用@synthesize。
這是我在.M
-(void)viewWillAppear:(BOOL)animated {
// The "pointer" and the "old" frame are the same so I thought it pointless to do
// selectedFormHighlight.frame = selectedFormHighlight.frame;
// I tried anyway and also tried this and many other combinations
selectedFormHighlight.frame = sfh.frame;
}
-(void)viewDidAppear:(BOOL)animated {
[UIView beginAnimations:nil context:NULL];
[UIView animateWithDuration:0.3 animations:^{
selectedFormHighlight.frame = CGRectMake(0,0,0,0);
}];
[UIView commitAnimations];
}
代碼當我運行這個動畫指針從屏幕(左上)和不回來。我已經嘗試了所有可能的組合,我可以在viewWillAppear和viewDidAppear中想到它,但它沒有任何區別。我嘗試刪除viewDidAppear中的其他行,它仍然執行相同的操作。
我認爲你建議在用戶從另一個屏幕返回時從原始(默認)位置的指針動畫。我不希望這樣,它應該簡單地留在他們沒有動畫的地方。或者至少在沒有意識到的情況下把它放回去。唯一的動畫是他們選擇在該視圖中點擊不同的按鈕。
嗨@Mundi,對不起,我是新來的,你可以給我一些更多的信息。你如何製作一個框架?我嘗試了你的代碼,但是使用'buttonHighlightImage.center = CGPointMake(125,205)'的中心方法;'但它在返回頁面後仍然重置圖像位置。否則,你如何創建newFrame? – PaulMrG 2013-02-21 02:04:04
我嘗試使用按鈕的中心作爲參考'buttonHighlightImage.center = CGPointMake(buttonHighlightImage.center.x,button1.center.y);'但它在返回到頁面後仍然重置。 – PaulMrG 2013-02-21 02:17:14
看到我的編輯/除了答案。 – Mundi 2013-02-21 09:06:22