sacar rapido personalizar pantalla control como color centro cambio cambiar bloqueo aparece acceso cocoa-touch ios uikit screen

cocoa-touch - rapido - no aparece el centro de control en mi iphone



¿Cómo obtener el ancho y la altura de la pantalla en iOS? (16)

¿Cómo se pueden obtener las dimensiones de la pantalla en iOS?

El problema con el código que publicaste es que estás contando con el tamaño de la vista para que coincida con el de la pantalla, y como has visto, no siempre es así. Si necesita el tamaño de la pantalla, debe mirar el objeto que representa la pantalla en sí, de la siguiente manera:

CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width; CGFloat screenHeight = screenRect.size.height;

Actualización para la vista dividida: En los comentarios, Dmitry preguntó:

¿Cómo puedo obtener el tamaño de la pantalla en la vista dividida?

El código dado arriba informa el tamaño de la pantalla, incluso en el modo de pantalla dividida. Cuando usas el modo de pantalla dividida, la ventana de tu aplicación cambia. Si el código anterior no le proporciona la información que espera, entonces, al igual que el OP, está buscando el objeto equivocado. En este caso, sin embargo, debes mirar la ventana en lugar de la pantalla, así:

CGRect windowRect = self.view.window.frame; CGFloat windowWidth = windowRect.size.width; CGFloat windowHeight = windowRect.size.height;

¿Cómo se pueden obtener las dimensiones de la pantalla en iOS?

Actualmente, uso:

lCurrentWidth = self.view.frame.size.width; lCurrentHeight = self.view.frame.size.height;

en viewWillAppear: y willAnimateRotationToInterfaceOrientation:duration:

La primera vez que consigo el tamaño de la pantalla completa. La segunda vez me aparece la pantalla menos la barra de navegación.


Aquí hay una forma rápida de obtener tamaños de pantalla:

print(screenWidth) print(screenHeight) 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 en:

https://github.com/goktugyil/EZSwiftExtensions


Aquí he actualizado para swift 3

ApplicationFrame en desuso de iOS 9

En Swift Three han eliminado () y han cambiado algunas convenciones de nomenclatura, puede consultar aquí Link

func windowHeight() -> CGFloat { return UIScreen.main.bounds.size.height } func windowWidth() -> CGFloat { return UIScreen.main.bounds.size.width }


Cuidado, [UIScreen mainScreen] también contiene la barra de estado, si desea recuperar el marco para su aplicación (excluyendo la barra de estado) debe usar

+ (CGFloat) window_height { return [UIScreen mainScreen].applicationFrame.size.height; } + (CGFloat) window_width { return [UIScreen mainScreen].applicationFrame.size.width; }


Es muy, muy fácil obtener el tamaño de su dispositivo , así como tener en cuenta la orientación:

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


He traducido algunas de las respuestas anteriores de Objective-C al código Swift. Cada traducción se realiza con una referencia a la respuesta original.

share

let screen = UIScreen.main.bounds let screenWidth = screen.size.width let screenHeight = screen.size.height

share

func windowHeight() -> CGFloat { return UIScreen.mainScreen().applicationFrame.size.height } func windowWidth() -> CGFloat { return UIScreen.mainScreen().applicationFrame.size.width }

Respuesta de la orientación del dispositivo

var screenHeight : CGFloat let statusBarOrientation = UIApplication.sharedApplication().statusBarOrientation // it is important to do this after presentModalViewController:animated: if (statusBarOrientation != UIInterfaceOrientation.Portrait && statusBarOrientation != UIInterfaceOrientation.PortraitUpsideDown){ screenHeight = UIScreen.mainScreen().applicationFrame.size.width } else { screenHeight = UIScreen.mainScreen().applicationFrame.size.height }

Respuesta de registro

let screenWidth = UIScreen.mainScreen().bounds.size.width let screenHeight = UIScreen.mainScreen().bounds.size.height println("width: /(screenWidth)") println("height: /(screenHeight)")


He usado estos métodos de conveniencia antes:

- (CGRect)getScreenFrameForCurrentOrientation { return [self getScreenFrameForOrientation:[UIApplication sharedApplication].statusBarOrientation]; } - (CGRect)getScreenFrameForOrientation:(UIInterfaceOrientation)orientation { CGRect fullScreenRect = [[UIScreen mainScreen] bounds]; // implicitly in Portrait orientation. if (UIInterfaceOrientationIsLandscape(orientation)) { CGRect temp = CGRectZero; temp.size.width = fullScreenRect.size.height; temp.size.height = fullScreenRect.size.width; fullScreenRect = temp; } if (![[UIApplication sharedApplication] statusBarHidden]) { CGFloat statusBarHeight = 20; // Needs a better solution, FYI statusBarFrame reports wrong in some cases.. fullScreenRect.size.height -= statusBarHeight; } return fullScreenRect; }


La respuesta moderna:

Si su aplicación admite vista dividida en iPad, este problema se vuelve un poco complicado. Necesita el tamaño de la ventana, no de la pantalla, que puede contener 2 aplicaciones. El tamaño de la ventana también puede variar durante la ejecución.

Usa el tamaño de la ventana principal de la aplicación:

UIApplication.shared.delegate?.window??.bounds.size ?? .zero

Nota: el método anterior puede obtener un valor incorrecto antes de que la ventana se convierta en una ventana clave al iniciar. Si solo necesitas ancho, el siguiente método es muy recomendable :

UIApplication.shared.statusBarFrame.width

La solución anterior que utiliza UIScreen.main.bounds devolverá los límites del dispositivo. Si su aplicación se ejecuta en modo de vista dividida, obtiene las dimensiones incorrectas.

self.view.window en la respuesta más self.view.window puede obtener un tamaño incorrecto cuando la aplicación contiene 2 o más ventanas y la ventana tiene un tamaño pequeño.


Me doy cuenta de que esta es una publicación antigua, pero a veces me parece útil para definir constantes como estas para no tener que preocuparme por eso:

#define DEVICE_SIZE [[[[UIApplication sharedApplication] keyWindow] rootViewController].view convertRect:[[UIScreen mainScreen] bounds] fromView:nil].size

La constante anterior debe devolver el tamaño correcto sin importar la orientación del dispositivo. Entonces obtener las dimensiones es tan simple como:

lCurrentWidth = DEVICE_SIZE.width; lCurrentHeight = DEVICE_SIZE.height;


Puede colocar estas macros en su archivo pch y utilizarlas en cualquier parte del proyecto usando "SCREEN_WIDTH"

#define SCREEN_WIDTH ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height)

y "SCREEN_HEIGHT"

#define SCREEN_HEIGHT ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width)

Ejemplo de uso:

CGSize calCulateSizze ; calCulateSizze.width = SCREEN_WIDTH/2-8; calCulateSizze.height = SCREEN_WIDTH/2-8;


Si desea el ancho / alto de la pantalla independientemente de la orientación del dispositivo (bueno para dimensionar solo en modo vertical, los controladores se lanzan desde orientaciones horizontales):

CGFloat screenWidthInPoints = [UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale; CGFloat screenHeightInPoints = [UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale;

[Pantalla principal de UIScreen] .nativeBounds <- De los documentos -> El rectángulo delimitador de la pantalla física, medido en píxeles. Este rectángulo se basa en el dispositivo en una orientación vertical. Este valor no cambia a medida que el dispositivo gira.


Tenemos que considerar la orientación del dispositivo también:

CGFloat screenHeight; // it is important to do this after presentModalViewController:animated: if ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortrait || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortraitUpsideDown){ screenHeight = [UIScreen mainScreen].applicationFrame.size.height; } else{ screenHeight = [UIScreen mainScreen].applicationFrame.size.width; }


swift 3.0

por ancho

UIScreen.main.bounds.size.width

para la altura

UIScreen.main.bounds.size.height


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


Utilice estas Structs para obtener información útil sobre el dispositivo actual en Swift 3.0

struct ScreenSize { // Answer to OP''s question static let SCREEN_WIDTH = UIScreen.main.bounds.size.width static let SCREEN_HEIGHT = UIScreen.main.bounds.size.height static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT) static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT) } struct DeviceType { //Use this to check what is the device kind you''re working with static let IS_IPHONE_4_OR_LESS = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0 static let IS_IPHONE_SE = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0 static let IS_IPHONE_7 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0 static let IS_IPHONE_7PLUS = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0 static let IS_IPHONE_X = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 812.0 static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0 } struct iOSVersion { //Get current device''s iOS version static let SYS_VERSION_FLOAT = (UIDevice.current.systemVersion as NSString).floatValue static let iOS7 = (iOSVersion.SYS_VERSION_FLOAT >= 7.0 && iOSVersion.SYS_VERSION_FLOAT < 8.0) static let iOS8 = (iOSVersion.SYS_VERSION_FLOAT >= 8.0 && iOSVersion.SYS_VERSION_FLOAT < 9.0) static let iOS9 = (iOSVersion.SYS_VERSION_FLOAT >= 9.0 && iOSVersion.SYS_VERSION_FLOAT < 10.0) static let iOS10 = (iOSVersion.SYS_VERSION_FLOAT >= 10.0 && iOSVersion.SYS_VERSION_FLOAT < 11.0) static let iOS11 = (iOSVersion.SYS_VERSION_FLOAT >= 11.0 && iOSVersion.SYS_VERSION_FLOAT < 12.0) static let iOS12 = (iOSVersion.SYS_VERSION_FLOAT >= 12.0 && iOSVersion.SYS_VERSION_FLOAT < 13.0) }


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