self.view.bounds.size.width renvoie une valeur incorrecte
Je suis confronté à un problème très étrange maintenant. Obtenir [[self view] bounds].size.width
toujours 320
c'est de ne pas changer en fonction de l'appareil. iPhone 5, 6 & 6 Plus pour tous il est de retour 320.000000
ci-dessous toutes les méthodes.
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%f", [[self view] bounds].size.width);
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"%f", [[self view] bounds].size.width);
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"%f", [[self view] bounds].size.width);
}
Sortie
2015-02-11 14:48:03.274 MyApp[2948:86285] 320.000000
2015-02-11 14:48:03.274 MyApp[2948:86285] 320.000000
2015-02-11 14:48:03.783 MyApp[2948:86285] 320.000000
Même l'écran de démarrage sont également là.
Comment puis-je obtenir la taille réelle de la vue?
source d'informationauteur Tapas Pal
Vous devez vous connecter pour publier un commentaire.
Utilisation
au lieu de
Il donne u devrait w/h.
Si vous essayez de lire
[[self view] bounds].size.width
valeur dans-(void) viewWillAppear:(BOOL)animated
vous allez voir qu'il va afficher la bonne valeur.Dans
- (void)viewDidLoad
[[self view] bounds].size.width
vous montrera modèle exact que vous avez dans .xib fichier.Voir ci-dessous échantillon et NSLog résultats.
Respectivement les résultats sont les suivants:
Ce qui se passe lorsque vous êtes absent le lancement fichier pour l'iPhone 6 et 6 Plus.
Essayez l'une de ces deux approches :
De l'iPhone 6 (Retina HD de 4,7) nécessite un portrait à l'image de lancement de
750 x 1334
.L'iPhone 6 Plus (Retina HD de 5,5) nécessite à la fois portrait et paysage des images de taille en tant que
1242 x 2208
et2208 x 1242
respectivement.Il est absolument nécessaire que vous ajoutez une image de lancement de la bonne taille pour l'iPhone 6 et l'iPhone 6 Plus. Sinon, ces dispositifs s'étirer un 320 points de largeur en plein écran. Ainsi, vous obtenez 320 signalé que la largeur. Avec le lancement de l'image, vous obtiendrez 475 ou 414 signalé que la largeur.
Utilisation
- (void)viewWillLayoutSubviews
à la place.Regardez ceci: La Gestion De La Disposition De L'Affichage
Parfois, tout ce dont vous avez besoin est de faire de telles choses sur un principal fil.
Pour moi,
Est travaillé ensuite accéder directement à l'image liée.
Pouvez vous s'il vous plaît faire un test en créant tout simplement un nouveau projet de test et écrire ci-dessous trois du journal des états à l'intérieur de
viewDidLoad
méthode deViewController
comme ce -Construire et d'Exécuter la résolution réelle de l'appareil/écran/vue
Exemple de sortie-
Je suis également confronté à la même question qui vous fait face. Je pense que ton viewcontroller est une largeur de 320 pixels. Après votre point de vue de la charge, l'appel d'une méthode après un certain retard, et puis obtenir corrent vue de l'image ou de la vue du lié. Vous obtenez la fenêtre de droite.
Affichage des tâches liées à la tâche en viewWillLayoutSubviews() la méthode
Il est préférable de s'appuyer sur l'Écran de limites pour plusieurs raisons. Elles reviendraient valeur exacte pour les différents appareils.
Utilisation viewDidLayoutSubviews méthode
Utilisation: