xcode Conversión de Storyboard de iPhone a iPad



10 Answers

Si hubiera creado un proyecto universal, de forma predeterminada se habría creado el guión gráfico vacío del iPad, solo tiene que seleccionar el guión gráfico del iPhone (Comando + A), copiar (Comando + C) y pegarlo en el guión gráfico del iPad. Asegúrese de mover el punto de entrada del guión gráfico vacío al guión gráfico recién copiado antes de compilar.

iphone xcode ipad storyboard

Tengo una aplicación para iPhone que tiene un guión gráfico. Ahora quiero proporcionar una aplicación de iPad también. Entonces, me pregunté si hay una función que me ayude a convertir mi guión gráfico del iPhone en un guión gráfico del iPad .

Ser especifico:

¿Hay una función similar o solo hay una forma manual?




Al leer muchos hilos en descubrí que la solución es:

1. Duplica tu iPhone-Storyboard y renómbrelo MainStoryboard_iPad.storyboard

2.Haga clic derecho en el guión gráfico -> “abrir como” -> “Código fuente”.

3.Busque targetRuntime = "iOS.CocoaTouch" y cámbielo a targetRuntime = "iOS.CocoaTouch.iPad"

5. Busque <simulatedScreenMetrics key="destination" type="retina4"/> y cámbiela a <simulatedScreenMetrics key="destination"/>

4. Ahora guarde todo y haga clic derecho en MainStoryboard_iPad.storyboard "abrir como" -> "IOS StoryBoard" 5. Es posible que también tenga que cambiar sus restricciones. Eso es todo lo que has hecho.




1 - Crea tu "MainStoryboard_iPad.storyboard";

2 - Haga clic derecho en "MainStoryboard_iPhone.storyboard" y "Abrir como -> Código fuente". Copia todo;

3- Haz clic derecho en tu "MainStoryboard_iPad.storyboard" y "Abrir como -> Código fuente". Pega todo. Ahora busca y cambia:

  • targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
  • type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"

4 - Guardar. Ahora vuelve a abrir pero usando el generador de interfaz. Sólo tendrá que volver a organizar.

Este método puede usarse también para archivos .xib




Aquí hay algo que me ahorró horas y podría ayudar a aquellos de ustedes con habilidades de Python.

He estado construyendo una aplicación durante los últimos dos meses, enfocada solo en el iPad que itera el UX con el equipo.

Hoy, centrado en la construcción de la versión para iPhone, seguí los pasos anteriores (¡gracias!) Pero no quería tener que cambiar el tamaño de todos los elementos de la interfaz de usuario desde las dimensiones del iPad en el editor de guión gráfico visual.

Así que escribí este pequeño script de Python Jig para escanear a través del archivo del guión gráfico en busca de x, y, ancho, altura y escala todo por una relación de 320./768. Entonces me permití centrarme en los ajustes finos.

  1. Copia tu guión gráfico en un nuevo archivo. (por ejemplo, iPhoneStoryboard.storyboard)

  2. Ejecute la secuencia de comandos a continuación con el nombre del archivo del guión gráfico copiado como primer parámetro.

  3. Generará el archivo de salida con el sufijo _adjusted.storyboard (por ejemplo, iPhoneStoryboard.storyboard_adjusted.storyboard)

Espero eso ayude...

import re
import sys
import math

afile = sys.argv[1]

scale = 320./768.

number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'


def replacescaledvalue(scale,pattern,sometext,replacefmt) :
    ip = re.search(pattern, sometext, re.IGNORECASE)
    if(ip) :
        np = re.search(number_pattern,ip.group(0))
        if(np) :
            val = float(np.group(0))
            val = int(math.floor(val*scale))
            sval = replacefmt+str(val)+'"'#+'px"'
            newtext = re.sub(pattern,sval,sometext)
            return newtext
    else :
        return sometext

fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
    newline = line
    newline = replacescaledvalue(scale,width_pattern,newline,'width="')
    newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
    newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
    newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
#   print newline
    fout.write( newline )

fin.close()
fout.close()



Solo como una nota rápida para aquellos que pueden haber tenido mi problema con esto:

Mi problema:

El contenido del guión gráfico se ha copiado bien en un nuevo archivo de pizarra que agregué. Sin embargo, no pondría cambios a mi iPad aprovisionado. Notando que tuve que cambiar el guión gráfico designado para el objetivo de compilación (ver imagen), deje que se muestren los cambios.

Publico una imagen si tuviera los puntos, pero la configuración se encuentra en:

Navegador del proyecto en el menú de origen del lado izquierdo, objetivo de la raíz de la pestaña general del proyecto (panel central), información del despliegue (segundo subtítulo), con la pestaña del botón iPad seleccionada.

A partir de ahí, elige tu guión gráfico en "interfaz principal".

Gracias por la publicación, espero que esta mención ayude a un obstáculo en algún lugar.




Usando las Clases de Tamaño XCode6 ya no necesita convertir el guión gráfico al iPad. El mismo Storyboard se puede usar tanto para el iPhone como para el iPad, evitando que tenga dos archivos actualizados.

El guión gráfico resultante es compatible con iOS7 +.

Lea más sobre esto aquí: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1

Use clases de tamaño para permitir que un guión gráfico o un archivo xib funcione con todos los tamaños de pantalla disponibles. Esto permite que la interfaz de usuario de su aplicación funcione en cualquier dispositivo iOS.




Seguí este hilo cuando fui golpeado con el mismo problema ayer. Los pasos que segui

  1. Para Xcode 5.1, tuve que hacer un poco de limpieza del guión gráfico del iPhone, como los reutilizadores perdidos de las celdas de la tabla, proporcionar la identificación del guión gráfico para cada controlador, eliminar las escenas no utilizadas.
  2. Copie MainStoryboard_iPhone.storyboard en MainStoryboard_iPad.storyboard.
  3. Uso de vi editor - cambiado targetRuntime="iOS.CocoaTouch" a targetRuntime="iOS.CocoaTouch.iPad"
  4. Cambie el código en MainStoryboard_iPad.storyboard de: <simulatedScreenMetrics key="destination" type="retina4"/> a <simulatedScreenMetrics key="destination"/>
  5. Abra el proyecto en Xcode.
  6. Cambió los dispositivos de implementación a Universal: elija la opción de NO copiar el Storyboard del iPhone.
  7. Xcode predeterminará el Destino de implementación a 7.1, se hizo cargo de las funciones en desuso.
  8. Para corregir el error de la vista mal colocada en el iPad Storyboard: se modificó el diseño del marco para los controladores que generaban errores.

Eso fue todo ... Gracias a todos por su ayuda ...




La forma más fácil y confiable de hacer esto es copiar y pegar desde el guión gráfico de su iPad.

  1. Cree un nuevo guión gráfico y asígnele un nombre como MainStoryboard_ipad.
  2. Convierta su aplicación en una aplicación universal estableciendo la propiedad Dispositivos en Universal en la página Resumen de las propiedades de destino para su proyecto.
  3. Abre tu guión gráfico para iPhone y selecciona todo y copia
  4. Abre tu guión gráfico iPad y pégalo.

Tendrá que cambiar el tamaño, pero puede ser más rápido que recrear todo el guión gráfico.




Un enfoque diferente

  1. Agregue un controlador de vista vacío con controlador de navegación en el guión gráfico del iPad

  2. Cambie la Clase a la Clase de su primer ViewController utilizado para iPhone, "fooViewController"

  3. Agregue el Storyboard-Identifier en el iPhone-Storyboard "fooViewController_storyboard_identifier" para el primer ViewController

  4. Ir a "fooViewController.m"

  5. Agregar variable bool bool nibWasLoadForIpad=false

  6. Ir a viewDidLoad

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && !nibWasLoadForIpad)
{
    nibWasLoadForIpad=true;
    UIStoryboard* Storyboard_iphone=[UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil];
    fooViewController *controller = [Storyboard_iphone instantiateViewControllerWithIdentifier:@"fooViewController_storyboard_identifier"];
    [self.navigationController pushViewController:controller animated:YES];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
}

(p. Sé que el problema es que los fondos de vista se configurarán en blanco)




Gracias por las respuestas a todos.

Seguí los pasos anteriores, pero cuando ejecuté la aplicación bajo el simulador o mi iPad, siguió usando solo el guión gráfico del iPhone.

Por alguna razón, cuando cambié el dispositivo de destino a Universal en lugar de iPhone, Xcode (v5.0) no actualizó el archivo app-Info.plist para incluir el guión gráfico del iPad, así que tuve que agregar manualmente la siguiente entrada ( usando el editor plist en Xcode):

Nombre de la base del archivo del guión principal (iPad) ==> MainStoryboard_iPad






Related