2010-07-04 57 views
1

我有一個奇怪的問題,當我使用UIView的開始,設置和提交的動畫切換視圖。奇怪的iPad屏幕問題 - 視圖之間移動推控制了?

,當我改變看法它是由約10個像素推我有在屏幕上向上的元素某種原因?

例如,當我打開我的第一個觀點在屏幕負載的元素都能正常,但只要我移動到另一個視圖的一切(在我所有的觀點)被拉高了10個像素。

下面的代碼是我在我的AppDelegate當按下按鈕時,我調用方法。 GameState是我的單例類,用於跟蹤ViewController。

- (void)gotoStartUp 
{ 
    StartUpController *myStartUp = [[StartUpController alloc] initWithNibName:@"StartUpController" bundle:nil]; 
    [self setStartUpController:myStartUp]; 
    [myStartUp release]; 

    GameState *myVC = [GameState currentGameState]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES]; 
     //[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:window cache:YES]; 
    [myVC.currentViewController.view removeFromSuperview]; 
    [self.window addSubview:[startUpController view]]; 
    [UIView commitAnimations]; 
} 

然後我有另一個視圖控制器和查看我切換到基於使用下面這樣的類似的方法所選擇的按鈕:

- (void)gotoNewGame 
{ 
    NewGameController *myStartUp = [[NewGameController alloc] initWithNibName:@"NewGameController" bundle:nil]; 
    [self setNewGameController:myStartUp]; 
    [myStartUp release]; 

    GameState *myVC = [GameState currentGameState]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES]; 
     //[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:window cache:YES]; 
    [myVC.currentViewController.view removeFromSuperview]; 
    [self.window addSubview:[newGameController view]]; 
    [UIView commitAnimations]; 
} 

我然後使用這些方法我的視圖之間導航(I有5個像這樣設置)。

我一直在試圖繞過視圖和視圖控制器我的胳膊,並把它們放在一起。我終於覺得自己正在取得一些進展,但我不知道從哪裏開始。請記住,我是Objective-C的新手(以及開發)。

這裏的屏幕看起來像初始加載內容(一切看起來右): alt text http://www.freeimagehosting.net/uploads/4e2eaffa69.png

這裏的屏幕的樣子後,我已經切換視圖,回到同一個畫面:

alt text http://www.freeimagehosting.net/uploads/c22ae63885.png

預先感謝您的幫助! 我想我更好地張貼我的應用程序委託頭文件,以及:

#import <UIKit/UIKit.h> 

@class StartUpController, FightController,PrepareArenaController, NewGameController, LoadGameController; 

@interface ArenaAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    IBOutlet StartUpController *startUpController; 
    IBOutlet LoadGameController *loadGameController; 
    IBOutlet NewGameController *newGameController; 
    IBOutlet PrepareArenaController *prepareArenaController; 
    IBOutlet FightController *fightController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet StartUpController *startUpController; 
@property (nonatomic, retain) IBOutlet LoadGameController *loadGameController; 
@property (nonatomic, retain) IBOutlet NewGameController *newGameController; 
@property (nonatomic, retain) IBOutlet PrepareArenaController *prepareArenaController; 
@property (nonatomic, retain) IBOutlet FightController *fightController; 


- (void)gotoStartUp; 
- (void)gotoGameInstructions; 
- (void)gotoLoadGame; 
- (void)gotoNewGame; 
- (void)gotoPrepareArena; 
- (void)gotoFight; 

@end 
+0

我有一個非常類似的問題 - 罪魁禍首似乎是狀態欄。在我的情況下,我只有一個視圖,但它首先在較高的位置加載(當我將窗口顏色設置爲藍色時,在屏幕底部留下一個藍色條),但是如果我旋轉它並將其旋轉,它向下移動。很想得到這個解決方案。 – Luke 2010-07-14 18:59:33

+0

你使用導航控制器並限制方向? – Pacu 2011-04-07 09:18:45

回答

1

試試這個代碼(從here)。它幫助我

- (void)viewWillAppear:(BOOL)animated { 
    // to fix the controller showing under the status bar 
    self.view.frame = [[UIScreen mainScreen] applicationFrame]; 
}