Salut, je me demande s'il existe un moyen d'obtenir la largeur par programme.
Je cherche quelque chose d'assez général pour accueillir iphone 3gs, iphone 4, ipad. En outre, la largeur doit changer en fonction du fait que l'appareil est en mode portrait ou paysage (pour ipad).
Quelqu'un sait comment faire ça ?? Je cherche depuis un moment ... merci!
iphone
objective-c
cocoa-touch
ipad
Foreyez
la source
la source
Réponses:
Jetez un œil à UIScreen .
par exemple.
CGFloat width = [UIScreen mainScreen].bounds.size.width;
Jetez un œil à la propriété applicationFrame si vous ne voulez pas que la barre d'état soit incluse (n'affectera pas la largeur).
MISE À JOUR: Il s'avère que UIScreen (-bounds ou -applicationFrame) ne prend pas en compte l'orientation actuelle de l'interface. Une approche plus correcte serait de demander à votre UIView ses limites - en supposant que cet UIView a été automatiquement tourné par son contrôleur de vue.
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { CGFloat width = CGRectGetWidth(self.view.bounds); }
Si la vue n'est pas pivotée automatiquement par le contrôleur de vue, vous devrez vérifier l'orientation de l'interface pour déterminer quelle partie des limites de la vue représente la «largeur» et la «hauteur». Notez que la propriété frame vous donnera le rect de la vue dans l'espace de coordonnées de UIWindow qui (par défaut) ne prendra pas en compte l'orientation de l'interface.
la source
CGRect screen = [[UIScreen mainScreen] bounds]; CGFloat width = CGRectGetWidth(screen); //Bonus height. CGFloat height = CGRectGetHeight(screen);
la source
Cela peut être fait en 3 lignes de code :
// grab the window frame and adjust it for orientation UIView *rootView = [[[UIApplication sharedApplication] keyWindow] rootViewController].view; CGRect originalFrame = [[UIScreen mainScreen] bounds]; CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil];
la source
À partir d'iOS 9.0, il n'y a aucun moyen d'obtenir l'orientation de manière fiable. C'est le code que j'ai utilisé pour une application que je conçois uniquement pour le mode portrait, donc si l'application est ouverte en mode paysage, elle sera toujours précise:
screenHeight = [[UIScreen mainScreen] bounds].size.height; screenWidth = [[UIScreen mainScreen] bounds].size.width; if (screenWidth > screenHeight) { float tempHeight = screenWidth; screenWidth = screenHeight; screenHeight = tempHeight; }
la source
Utilisez ce code, cela vous aidera
[[UIScreen mainScreen] bounds].size.height [[UIScreen mainScreen] bounds].size.width
la source
utilisation:
NSLog(@"%f",[[UIScreen mainScreen] bounds].size.width) ;
la source
Voici un moyen Swift d'obtenir les tailles d'écran, cela prend également en compte l'orientation actuelle de l'interface:
var screenWidth: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.width } else { return UIScreen.mainScreen().bounds.size.height } } var screenHeight: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.height } else { return UIScreen.mainScreen().bounds.size.width } } var screenOrientation: UIInterfaceOrientation { return UIApplication.sharedApplication().statusBarOrientation }
Ceux-ci sont inclus en tant que fonction standard dans:
https://github.com/goktugyil/EZSwiftExtensions
la source