1

iPhoneのスプラッシュ画面で作業しているときに、横向きモードのスプラッシュ画面に表示されるいくつかの画像を使用してカスタムアニメーションを作成しました。次に、2番目のビューが読み込まれたときに、縦向きモードで表示されるようにしたいのですが、実装できません。これ、ここに私のコードがあります:

@interface SplashViewController : UIViewController
 {
 IBOutlet   UIImageView *ani;
  NSMutableArray *arr;
}
@property(strong,nonatomic)UIImageView *ani; 
@property(strong,nonatomic)NSMutableArray *arr;
-(void)switchView;
@end

#import "SecondView.h"
@implementation SplashViewController
@synthesize ani,arr;  


 - (void)viewDidLoad
{

arr = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"image_1.png"],
       [UIImage imageNamed:@"image_2.png"],[UIImage imageNamed:@"image_3.png"], 
       [UIImage imageNamed:@"image_4.png"],[UIImage imageNamed:@"image_5.png"],
       [UIImage imageNamed:@"image_6.png"],[UIImage imageNamed:@"image_7.png"],
       [UIImage imageNamed:@"image_8.png"],[UIImage imageNamed:@"image_9.png"],
       [UIImage imageNamed:@"image_10.png"],[UIImage imageNamed:@"image_11.png"],
       [UIImage imageNamed:@"image_12.png"],[UIImage imageNamed:@"image_13.png"],
       [UIImage imageNamed:@"image_14.png"],[UIImage imageNamed:@"image_15.png"],
       [UIImage imageNamed:@"image_16.png"],[UIImage imageNamed:@"image_17.png"],
       [UIImage imageNamed:@"image_18.png"],[UIImage imageNamed:@"image_19.png"],       
         [UIImage imageNamed:@"image_20.png"],nil];


   [ani setImage:[UIImage imageNamed:@"image_20.png"]];

ani.animationImages=arr;

ani.animationDuration=10;
 //   ani.animationRepeatCount=1.0;
[ani startAnimating];
[self performSelector:@selector(switchView) withObject:nil afterDelay:15.0];


          [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.
}


-(void)switchView
{
 [ani stopAnimating];
 SecondView *sec=[[SecondView alloc]init];
[self.view addSubview:sec.view];

}

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

セカンドビューのボタンを1つ取ってスプラッシュビューを削除したので、セカンドビューのボタンをクリックするとスプラッシュビューが消えるか、セカンドビューのロードで同じことができますが、達成できません。

 -(IBAction)btn:(id)sender
{
 // UIViewController 
[self.view removeFromSuperview];
 }

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

注:フラッシュにDefault.png画像を使用したくないので、スプラッシュのこのカスタムアニメーションを横向きモードにし、次のビューを縦向きにします。これを実行しようとすると、2番目のビューがスプラッシュに表示されますビューですが、スプラッシュビューはまだビューの背面に表示されます..テストするシミュレーターしかありません..誰かがこれについて私を助けることができますか?

4

4 に答える 4

0

その特定のクラスのviewDidLoadで以下を使用してみてください

 [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications] ;
于 2012-09-13T12:05:00.990 に答える
0

switchViewメソッドで次のコードを使用できます

-(void)switchView
{
 [ani stopAnimating];
 SecondView *sec=[[SecondView alloc]init];

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

appDelegate.window.rootViewController = sec;

}
于 2012-09-13T12:09:05.113 に答える
0
  • add subviewはshouldAutorotateToInterfaceOrientationメソッドを呼び出さないため、addsubviewの代わりに2番目のビューを表示してみてください。それは間違いなくあなたの問題を解決します。
于 2012-09-13T12:25:23.013 に答える
0

spalshScreenController内にビューの切り替えを実装しないでください。それはその責任ではなく、appdelegate applicationDidFinishLaunchingメソッドで行う方がよいでしょう。

-(void)applicationDidFinishLaunching:(UIApplication *)application {
     splashViewController = [[SplashViewController alloc] initWithNibName:@"SplashView" bundle:nil];
     [window addSubview:splashViewController.view];
     [window makeKeyAndVisible];

  }

ボタンが押されたことに応答するメソッドを追加して、2番目のコントローラーのビューを表示します。

-(void)onSlashScreenDone{

     [splashViewController.view removeFromSuperview];
     [window addSubview:[youOtherController view]];
     [window makeKeyAndVisible];

}

メソッドを実装することにより、2番目のコントローラーで許可する方向を許可しますshouldAutorotateToInterfaceOrientation

これを見てくださいtut:これは、iOSでスプラッシュスクリーンを作成する方法についてよく説明されています。

于 2012-09-13T12:30:19.480 に答える