Cómo desarrollar o migrar aplicaciones para iPhone 5 resolución de pantalla?


La nueva pantalla del iPhone 5 tiene una nueva relación de aspecto y una nueva resolución (640 x 1136 píxeles).

¿Qué se requiere para desarrollar aplicaciones nuevas o hacer la transición al nuevo tamaño de pantalla?

¿Qué debemos tener en cuenta para hacer que las aplicaciones sean "universales" tanto para las pantallas más antiguas como para la nueva relación de aspecto de pantalla ancha?

Author: Midhun MP, 2012-09-12

30 answers

  1. Descargue e instale la última versión de Xcode.
  2. Establezca un archivo de pantalla de inicio para su aplicación (en la pestaña general de la configuración de destino). Así es como puedes usar el tamaño completo de cualquier pantalla, incluidos los tamaños de vista dividida de iPad en iOS 9.
  3. Pruebe su aplicación y, con suerte, no haga nada más, ya que todo debería funcionar mágicamente si ha configurado correctamente el cambio de tamaño automático de las máscaras o ha utilizado el Diseño automático.
  4. Si no lo hizo, ajuste sus diseños de vista, preferiblemente con Auto Diseño.
  5. Si hay algo que tiene que hacer específicamente para las pantallas más grandes, entonces parece que tiene que verificar la altura de [[UIScreen mainScreen] bounds] ya que parece que no hay una API específica para eso. A partir de iOS 8 también hay clases de tamaño que resumen los tamaños de pantalla en regular o compacto vertical y horizontalmente y son una forma recomendada de adaptar su interfaz de usuario.
 476
Author: Filip Radelic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-16 04:18:34

Si tienes una aplicación creada para iPhone 4S o anterior, se ejecutará letterboxed en el iPhone 5.

Para adaptar tu app a la nueva pantalla taller, lo primero que debes hacer es cambiar la imagen de lanzamiento a: [email protected]. Su tamaño debe ser 1136x640 (HxW). Sí, tener la imagen predeterminada en el nuevo tamaño de pantalla es la clave para permitir que tu aplicación tome toda la pantalla del nuevo iPhone 5.

(Tenga en cuenta que la convención de nomenclatura solo funciona para la imagen predeterminada. Nombrar otra imagen "[email protected]" no hará que se cargue en lugar de "[email protected]". Si necesita cargar diferentes imágenes para diferentes tamaños de pantalla, tendrá que hacerlo programáticamente.)

Si tienes mucha, mucha suerte, eso podría ser todo... pero con toda probabilidad, tendrás que dar algunos pasos más.

  • Asegúrese de que sus Xibs / Views usan auto-layout para redimensionarse.
  • Utilice resortes y puntales para cambiar el tamaño de las vistas.
  • Si esto no es lo suficientemente bueno para su aplicación, diseñe su xib / storyboard para un tamaño de pantalla específico y reposicionar programáticamente para el otro.

En el caso extremo (cuando ninguno de los anteriores es suficiente), diseñe los dos Xibs y cargue el apropiado en el controlador de vista.

Para detectar el tamaño de la pantalla:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}
 116
Author: Sanjay Chaudhry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-29 07:14:09

Lo único realmente necesario es agregar una imagen de lanzamiento llamada "[email protected]" a los recursos de la aplicación, y en el caso general (si tienes la suerte) la aplicación funcionará correctamente.

En caso de que la aplicación no maneje eventos táctiles, asegúrese de que la ventana de teclas tenga el tamaño adecuado. La solución es establecer el marco adecuado:

[window setFrame:[[UIScreen mainScreen] bounds]]

Hay otros problemas no relacionados con el tamaño de pantalla al migrar a iOS 6. Leer iOS 6.0 Notas de la versión para detalles.

 30
Author: onegray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-19 01:52:17

A veces (para aplicaciones previas al storyboard), si el diseño va a ser lo suficientemente diferente, vale la pena especificar un xib diferente según el dispositivo (consulte esta pregunta-deberá modificar el código para tratar con el iPhone 5) en ViewController init, ya que ninguna cantidad de giros con máscaras de autoresizing funcionará si necesita gráficos diferentes.

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

Esto es útil para aplicaciones que están dirigidas a versiones anteriores de iOS.

 23
Author: SomaMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:46

Aquí puede encontrar un buen tutorial (para MonoTouch, pero también puede usar la información para proyectos no MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today /

  1. Crea una nueva imagen para tu pantalla splash / default ( 640 x 1136 pixel ) con el nombre " [email protected]"

  2. En iOS Simulator , vaya al menú Hardware - > Device y seleccione " iPhone (Retina 4 pulgadas)"

  3. Crear otras imágenes, por ejemplo, imágenes de fondo

  4. Detecta iPhone 5 para cargar tus nuevas imágenes:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}
 20
Author: Manni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-24 08:23:25

Es fácil migrar iPhone5 e iPhone4 a través de XIBs.........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}
 13
Author: shankar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-03 10:00:05

Resuelvo este problema aquí. Simplemente agregue ~568h @ 2x sufijo a las imágenes y ~568h a xib. No necesita más comprobaciones de tiempo de ejecución o cambios de código.

 12
Author: Shimanski Artem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-27 08:02:09

Había añadido la nueva imagen de lanzamiento por defecto y (en la comprobación de varias otras respuestas SE...) me aseguré de que mis storyboards se auto-dimensionaran y subviews pero la retina 4 pulgadas todavía letterboxed.

Entonces noté que mi info plist tenía un elemento de línea para "Launch image" establecido en "Default.png", que de esta manera eliminé y mágicamente letterboxing ya no apareció. Espero que eso salve a alguien más la misma locura que soporté.

 10
Author: SkeletonJelly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-26 16:50:42

Supongo que no va a funcionar en todos los casos, pero en mi proyecto en particular me evitó la duplicación de NIB-files:

En algún lugar de common.h puede hacer estas definiciones basadas en la altura de la pantalla:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

En su controlador base:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}
 9
Author: iutinvg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:11:27

En un archivo constants.h puede agregar estas instrucciones define:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)
 9
Author: Khwarezm Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:16:19

Para determinar si su aplicación puede soportar iPhone 5 Retina use esto: (Esto podría ser más robusto para devolver el tipo de pantalla, Retina 4S, etc., pero como está escrito a continuación, solo regresa si el iPhone es compatible con iOS5 Retina como un SÍ o NO)

En un común ".h " archivo añadir:

BOOL IS_IPHONE5_RETINA(void);

En un común ".m " archivo añadir:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}
 9
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:17:22

En primer lugar crear dos xibs y adjuntar todos los delegados, clase principal a la xib y luego u puede poner en esta condición se menciona a continuación en su archivo appdelegate.m en

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

Puede usarlo en cualquier lugar del programa dependiendo de sus requisitos, incluso en sus clases ViewController. Lo que más importa es que haya creado dos xib archivos separados para iphone 4(320*480) and iphone 5(320*568)

 8
Author: mandeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-07 05:34:08

Pruebe el siguiente método en una clase singleton:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }
 7
Author: Mohammed Ebrahim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:12:03

Puede usar la función Auto Layout y crear el diseño con la resolución de pantalla del iPhone 5 y funcionará para los dispositivos de 4" y 3.5", pero en este caso debe tener un conocimiento suficiente de layout manager.

 7
Author: DeveshM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:12:27

La comprobación de bounds con 568 fallará en modo horizontal. El iPhone 5 se inicia solo en modo retrato, pero si desea admitir rotaciones, entonces el iPhone 5 "check" también tendrá que manejar este escenario.

Aquí hay una macro que maneja el estado de orientación:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

El uso de la llamada 'preferredMode' es de otra publicación que leí hace unas horas, así que no se me ocurrió esta idea.

 7
Author: Christopher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:13:10

Primero muestra esta imagen. En esa imagen se muestra una advertencia para el soporte de Retina 4, así que haga clic en esta advertencia y haga clic en agregar para que su pantalla de inicio de Retina 4 se agregue automáticamente en su proyecto.

Mostrar imagen aquí

Y después de usar este código:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }
 6
Author: Darshan Kunjadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:09:08

Nunca me enfrenté a un problema con cualquier dispositivo, ya que he tenido una base de código para todos, sin ningún valor codificado. Lo que hago es tener la imagen de tamaño máximo como recurso en lugar de una para cada dispositivo. Por ejemplo, tendría uno para la pantalla retina y lo mostraría como ajuste de aspecto para que sea vistas como está en todos los dispositivos. Llegando a decidir el marco del botón, por ejemplo, en tiempo de ejecución. Para esto utilizo el valor % de la vista de patente, por ejemplo, si quiero que el ancho sea la mitad de la vista padre 50% del padre y lo mismo se aplica para la altura y el centro.

Con esto ni siquiera necesito los xibs.

 6
Author: infiniteLoop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:16:59

Puede usar esta definición para calcular si está utilizando el iPhone 5 en función del tamaño de la pantalla:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

Luego use una simple if declaración:

    if (IS_IPHONE_5) {

    // What ever changes
    }
 5
Author: Mutawe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:10:38

Peter, realmente deberías echar un vistazo a Canappi, hace todo eso por ti, todo lo que tienes que hacer es especificar el diseño como tal:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

A partir de ahí Canappi generará el código objective-c correcto que detecta el dispositivo en el que se está ejecutando la aplicación y utilizará:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappi funciona como Interface Builder y Story Board combinados, excepto que está en una forma textual. Si ya tiene archivos XIB, puede convertirlos para que no tenga que recrear toda la interfaz de usuario desde cero.

 4
Author: metaprogrammer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-25 15:30:48

Puedes comprobar manualmente el tamaño de la pantalla para determinar en qué dispositivo estás:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}
 4
Author: Robot1987,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:09:47

Podrías añadir este código:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }
 3
Author: dbramhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-23 13:53:30

Este es un código universal real, puedes crear 3 story board diferentes:

Establezca el modo Universal de su proyecto y configure su iPhone de historia principal con el storyboard iPhone5 y el ipad principal con el storyboard objetivo de iPad, ahora agregue un nuevo objetivo de storyboard para iphone y modifique la resolución para iphone 4s o menos ahora implemente su AppDelegate.m

IPhone4 / 4s (es el mismo para 3/3Gs) uno para iPhone5 y hacer el proyecto universal , con un nuevo Objetivo de Storyboard para iPad, ahora en AppDelegate.m en el didFinishLaunching añadir este código:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

Así que ha creado una aplicación Universal para iPhone 3/3Gs/4 / 4s / 5 Toda la generación de iPod, y Todo tipo de iPad

Recuerde integrar todos los IMG con myImage.png y [email protected]

 3
Author: BlackSheep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:08:29

Según mí, la mejor manera de lidiar con estos problemas y evitar un par de condiciones necesarias para verificar la altura del dispositivo, es usar el marco relativo para las vistas o cualquier elemento de la interfaz de usuario que esté agregando a su vista, por ejemplo: si está agregando algún elemento de la interfaz de usuario que desee que esté en la parte inferior de la vista o justo encima de la barra de pestañas, debe tomar el origen y con respecto a la altura de su vista o con respecto a la barra de pestañas (si está presente) y tenemos la propiedad de redimensionamiento automático como bien. Espero que esto funcione para usted

 2
Author: Pranav Bhardwaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-03 12:47:24

En lugar de usar un conjunto de condicionales, puede cambiar el tamaño de su vista automáticamente utilizando el tamaño de pantalla.

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

En mi caso, quiero una vista que llene el espacio entre algunos campos de entrada en la parte superior y algunos botones en la parte inferior, por lo que fija la esquina superior izquierda y variable inferior derecha según el tamaño de la pantalla. Mi aplicación llena la vista de imagen con la foto tomada por la cámara, así que quiero todo el espacio que pueda obtener.

 1
Author: Charles Jaimet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-30 14:12:14

Si necesita convertir una aplicación ya existente a universal, debe seleccionar el archivo xib correspondiente->mostrar utilidades-> Mostrar inspector de tamaño.

En el inspector de tamaño se puede ver el tamaño automático, mediante el uso de esta herramienta se puede convertir a la aplicación iOS existente.

 1
Author: Prad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:07:55

Usando xCode 5, seleccione "Migrar al Catálogo de activos" en Proyecto>General.

Luego use "Mostrar en finder" para encontrar su imagen de lanzamiento, puede editarla de forma ficticia para que sea 640x1136, luego arrástrela al catálogo de activos como se muestra en la imagen de abajo.

Asegúrese de que la sección iOS7 e iOS6 R4 tenga una imagen de 640x1136. La próxima vez que inicie la aplicación, las barras negras desaparecerán y su aplicación usará una pantalla de 4 pulgadas

introduzca la descripción de la imagen aquí

 0
Author: Alex Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-08 15:51:04

Punto digno de atención-en el nuevo Xcode tienes que añadir este archivo de imagen [email protected] a los activos

 0
Author: Michal Gumny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-06 08:36:51

Utilice la función Auto Layout para las vistas. Se ajustará automáticamente a todas las resoluciones.

Cree dos xibs para un controlador que tenga el nombre del controlador con el sufijo ~iphone o ~ipad. En tiempo de compilación, Xcode tomará el xib correcto basado en el dispositivo.

Utilice clases de tamaño, si desea crear un solo xib para iPhone y iPad, si la vista es lo suficientemente simple como para portar a iPhone y iPad.

 0
Author: Praveen Matanam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:06:28

Hay un pequeño problema al probar tanto en el dispositivo iOS como en el simulador iOS. Parece que simulator (XCode 6.0.1) da valores conmutados para ancho y alto en [[UIScreen mainScreen] bounds].size dependiendo de la orientación del dispositivo.

Así que esto podría ser un problema al determinar el tamaño de pantalla físico correcto. Este código también ayuda a distinguir todos 2014. Generaciones de modelos de iPhone:

  • iPhone4S
  • iPhone5 (e iPhone5s)
  • iPhone6 (e iPhone6+)

También puede ser se cambia fácilmente para hacer la distinción entre, por ejemplo, iPhone6 de iPhone6+.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}
 0
Author: vedrano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:06:54

Sugeriría utilizar la máscara de Autoresizing en sus aplicaciones de acuerdo con su interfaz de usuario, ahorra muchos problemas y es mejor que hacer una interfaz de usuario diferente para iPhone 4 y 5 pantallas.

 0
Author: Geet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 15:07:19