it-swarm.com.de

IPhone/IPad: Wie kann ich die Bildschirmbreite programmgesteuert erhalten?

Hallo, ich frage mich, ob es eine Möglichkeit gibt, die Breite programmgesteuert zu erhalten. 

Ich suche etwas allgemein genug, um iphone 3gs, iphone 4, ipad unterzubringen. Die Breite sollte sich auch ändern, je nachdem, ob das Gerät im Hoch- oder Querformat ist (für ipad).

Weiß jemand, wie das geht? Ich habe eine Weile gesucht ... Danke! 

79
foreyez

Werfen Sie einen Blick auf UIScreen .

z.B.

CGFloat width = [UIScreen mainScreen].bounds.size.width;

Schauen Sie sich die applicationFrame -Eigenschaft an, wenn Sie nicht möchten, dass die Statusleiste eingeschlossen wird (die Breite wird dadurch nicht beeinflusst).

UPDATE: Es stellt sich heraus, dass UIScreen (-bounds oder -applicationFrame) die aktuelle Schnittstellenorientierung nicht berücksichtigt. Ein korrekter Ansatz wäre, Ihren UIView nach seinen Grenzen zu fragen - vorausgesetzt, dieser UIView wurde vom View-Controller automatisch gedreht.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    CGFloat width = CGRectGetWidth(self.view.bounds);
}

Wenn die Ansicht vom View Controller nicht automatisch gedreht wird, müssen Sie die Ausrichtung der Schnittstelle überprüfen, um zu bestimmen, welcher Teil der Ansichtsgrenzen die Breite und die Höhe darstellt. Beachten Sie, dass Sie mit der Frame-Eigenschaft das Rechteck der Ansicht im Koordinatenraum des UIWindow erhalten, das (standardmäßig) die Schnittstellenorientierung nicht berücksichtigt. 

192
Alan Rogers
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
//Bonus height.
CGFloat height = CGRectGetHeight(screen);
11
thyrgle

Dies kann in in 3 Zeilen Code erfolgen:

// 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];
6
memmons

Ab iOS 9.0 gibt es keine Möglichkeit, die Orientierung verlässlich zu erhalten. Dies ist der Code, den ich für eine App verwendet habe, die ich nur für den Hochformatmodus entworfen habe. Wenn die App im Querformatmodus geöffnet wird, ist sie dennoch genau:

screenHeight = [[UIScreen mainScreen] bounds].size.height;
screenWidth = [[UIScreen mainScreen] bounds].size.width;
if (screenWidth > screenHeight) {
    float tempHeight = screenWidth;
    screenWidth = screenHeight;
    screenHeight = tempHeight;
}
0
Bobby

benutzen:

NSLog(@"%f",[[UIScreen mainScreen] bounds].size.width) ;
0
Nick

Verwenden Sie diesen Code, wird es helfen 

[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
0