iphone - verificacion - ¿Cómo obtener el tamaño de la pantalla usando el código?
se enviaron demasiados codigos iphone (10)
Me gustaría obtener el tamaño de la pantalla del iPhone para dar el cálculo, pero no encontré ninguna documentación sobre cómo obtenerlo. ¿Podrías resolverlo por mí?
Gracias
Aquí hay una forma rápida de obtener tamaños de pantalla:
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
}
Estos se incluyen como una función estándar here .
Esto también está en la documentación.
Aquí hay una solución ''rápida'': (Actualizado para veloz 3.x)
let screenWidth = UIScreen.main.fixedCoordinateSpace.bounds.width
let screenHeight = UIScreen.main.fixedCoordinateSpace.bounds.height
Esto informa en puntos no en píxeles y "siempre refleja [s] las dimensiones de la pantalla del dispositivo en una orientación vertical" (Apple Docs) . ¡No necesita molestarse con UIAnnoyinglyLongDeviceOrientation!
Si desea que el ancho y la altura reflejen la orientación del dispositivo:
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
Aquí el ancho y la altura cambiarán los valores de flip flop según si la pantalla está en vertical u horizontal.
Y aquí está cómo obtener el tamaño de la pantalla medido en píxeles, no en puntos:
let screenWidthInPixels = UIScreen.main.nativeBounds.width
let screenHeightInPixels = UIScreen.main.nativeBounds.height
Esto también "se basa en el dispositivo en una orientación vertical. Este valor no cambia a medida que el dispositivo gira". (Apple Docs)
Tenga en cuenta que para swift 2.xy menos, debe usar UIScreen.mainScreen()
lugar de UIScreen.main
El uso de los UIScreen
de UIScreen
es una buena manera de hacerlo, pero debe CGGeometry
funciones de CGGeometry
para acceder a los datos de CGRect
lugar de acceder a ellos directamente. Vea los docs CGGeometry
.
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = CGRectGetWidth(screenBound);
CGFloat screenHeight = CGRectGetHeight(screenBound);
Similar a la anterior, pero ligeramente menos detallada:
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;
Suponiendo que desea tomar en cuenta la orientación actual, use:
float screen_width;
float screen_height;
float vers = [[[UIDevice currentDevice] systemVersion] floatValue];
UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation;
if (vers < 8 && UIInterfaceOrientationIsLandscape(orient))
{
screen_height = [[UIScreen mainScreen] bounds].size.width;
screen_width = [[UIScreen mainScreen] bounds].size.height;
}
else
{
screen_width = [[UIScreen mainScreen] bounds].size.width;
screen_height = [[UIScreen mainScreen] bounds].size.height;
}
Use este código para corregir en iOS8:
float SW;
float SH;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (( [[[UIDevice currentDevice] systemVersion] floatValue]<8) && UIInterfaceOrientationIsLandscape(orientation))
{
SW = [[UIScreen mainScreen] bounds].size.height;
SH = [[UIScreen mainScreen] bounds].size.width;
}
else
{
SW = [[UIScreen mainScreen] bounds].size.width;
SH = [[UIScreen mainScreen] bounds].size.height;
}
Utilice los bounds
de propiedad de UIView
si desea conocer el tamaño de una determinada vista o [[UIScreen mainScreen] bounds]
si desea conocer el tamaño de pantalla del dispositivo.
[[UIScreen mainScreen] bounds] devuelve las dimensiones de la pantalla física sin tener en cuenta la orientación del dispositivo.
Si necesita obtener el tamaño de la pantalla según la orientación actual, consulte ¿Cómo obtener la altura y el ancho de la pantalla que dependen de la orientación?
Puede usar la propiedad de bounds
en una instancia de UIScreen:
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
La mayoría de las personas querrá la pantalla principal; si tiene un dispositivo conectado a un televisor, en su lugar puede querer iterar sobre UIScreens y obtener los límites para cada uno.
Más información en los documentos de la clase UIScreen .
float screen_Height;
float screen_Width;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
screen_Height = [[UIScreen mainScreen] bounds].size.height;
screen_Width = [[UIScreen mainScreen] bounds].size.width;
} else {
screen_Height = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width);
screen_Width = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height);
}