L'ajout d'un TabBarController que la sous-vue de Vue
Je suis le chargement d'un écran de démarrage de mon application démarre. Alors je veux charger un TabBarController et c'est ViewControllers. Cependant, mon TabBarController fenêtre n'est pas à l'échelle de la taille de l'écran.
Probablement 3/4 de la TabBar en bas, c'est se couper et Il y a une mince approximative de 20 pixels de l'écart en haut de l'écran en dessous de la barre d'état. Comment redimensionner la TabBarController correctement?
Voici le code dans mon SplashViewController chargement de la splash vue, et la TabBarController:
-(void)loadView{
//Init the view
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
UIView *view = [[UIView alloc] initWithFrame:appFrame];
view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = view;
[view release];
splashImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash.png"]];
splashImageView.frame = CGRectMake(0,0,320,458);
[self.view addSubview:splashImageView];
viewController = [[FlashCardViewController alloc] initWithNibName:@"FlashCardViewController" bundle:[NSBundle mainBundle]];
//viewController.view.bounds = [[UIScreen mainScreen]bounds];
viewController.title = @"Quiz";
viewController.tabBarItem.image = [UIImage imageNamed:@"puzzle.png"];
UIViewController *viewController2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
viewController2.title = @"Nada";
viewController2.tabBarItem.image = [UIImage imageNamed:@"magnifying-glass.png"];
//viewController.view.alpha = 0.0;
//[self.view addSubview:viewController.view];
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:viewController, viewController2, nil];
[viewController2 release];
tabBarController.view.alpha = 0.0;
//tabBarController.tabBarItem.image = [UIImage imageNamed:@"State_California.png"];
//tabBarController.tabBarItem.title = @"State_California.png";
tabBarController.view.bounds = [[self view] bounds];
//tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
[self.view addSubview:tabBarController.view];
timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fadeScreen) userInfo:nil repeats:NO];
}
-(void) fadeScreen
{
[UIView beginAnimations:nil context:nil]; //begin animation block
[UIView setAnimationDuration:0.75]; //sets animation duration
[UIView setAnimationDelegate:self]; //sets the delegate for this block
[UIView setAnimationDidStopSelector:@selector(finishedFading)]; //Calls finishFading
self.view.alpha = 0.0; // //Fades the alpha to 0 over animation
[UIView commitAnimations]; //Commits this block, done
}
-(void) finishedFading
{
[UIView beginAnimations:nil context:nil]; //Begin animation block
[UIView setAnimationDuration:0.75]; //set duration
self.view.alpha = 1.0; //fades the view to 1.0 alpha over .75 seconds
//viewController.view.alpha = 1.0;
tabBarController.view.alpha = 1.0;
[UIView commitAnimations];
[splashImageView removeFromSuperview];
}
OriginalL'auteur Bryan | 2009-08-25
Vous devez vous connecter pour publier un commentaire.
Je viens de terminer à peu près la même et a couru dans le même problèmes mais finalement je l'ai eu à travailler.
Créer un Affichage de Contrôleur de classe dans Xcode appelé
Test1ViewController
et ajoutez les éléments suivants:Créer une Vue XIB appelé
Test1View
Ajouter un
TabBarViewController
à la XIBDéfinir le Propriétaire du Fichier dans le XIB à la
Test1ViewController
.Connecter le
tbc
IBOutlet dans le Propriétaire du Fichier de la Barre d'Onglet Contrôleur dans le XIB.Connecter le
view
IBOutlet dans le Propriétaire du Fichier à la Vue dans le XIB.Dans votre SplashViewController.h ajout de la propriété
Synthétiser les
tabBarViewController
dans votreSplashViewController.m
.Remplacer votre
TabBarController
création de code dans votreloadView
méthode dansSplashViewController
avec les éléments suivants:Voici le morceau qui manquait pour moi. Dans
Test1ViewController.m
, vous devez ajouter la ligne suivante à laviewDidLoad
méthode:Enfin, j'ai aussi dû changer le
finishedFading
méthode dansSplashViewController.m
pour définir l'alpha à 1.0 sur letabBarViewController
vue.J'espère que cette aide.
Merci! Je ne pouvais pas pour la vie de me le faire fonctionner, il s'avère qu'il me manquait l'étape 10.
Presque tout dans cette réponse était mort sur d'autres que l'étape 10. Pour une raison qui ne fonctionne pas maintenant, peut-être son un iOS5 chose? Au lieu de placer l'auto.tabBarController.vue.image = [[vue de soi] image] dans viewWillAppear a fait le tour pour moi.
OriginalL'auteur
J'ai enfin trouvé un truc qui fonctionne. Au lieu de:
ou
Parce que je ne pouvais pas en trouver et ou automatique des paramètres nommés pour cette taille, j'ai dû créer mon propre rectangle de la taille de l'écran, moins la barre d'état.
serait-ce meilleure réponse: tabBarController.vue.frame = CGRectMake(0, 0, auto.vue.cadre.taille.largeur, de soi.vue.cadre.taille.hauteur); étant donné que la largeur et la hauteur varient en fonction de chaque périphérique à l'aide de l'utilisateur?
OriginalL'auteur Bryan