Conversión de Storyboard de iPhone a iPad


Answers

Si hubiera creado un proyecto universal, de manera 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 para seleccionar todo (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 recientemente copiado antes de compilar.

Question

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

Ser especifico:

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




Gracias por las respuestas a todos.

Seguí los pasos anteriores, pero cuando ejecuté la aplicación en el simulador o en mi iPad, seguí usando el guión gráfico de iPhone.

Por alguna razón, cuando cambié el dispositivo objetivo para que fuera 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 base del archivo principal del guión gráfico (iPad) ==> MainStoryboard_iPad




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

Mi problema:

El contenido del guión gráfico se copió muy bien a un nuevo archivo de la tabla que agregué. Sin embargo, no cambiaría mi iPad aprovisionado. Al darme cuenta de que tenía que cambiar el guión gráfico designado para el objetivo de compilación (ver imagen), deja que se muestren los cambios.

Publicaba una imagen si tenía los puntos, pero la configuración se encuentra en:

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

A partir de ahí, elija su guión gráfico en la "interfaz principal".

Gracias por la publicación, espero que esta mención ayude a un inconveniente en alguna parte.




Para Xcode10

  1. Solo duplicar Main.storyboard

  2. A continuación, Main_iPad.storyboard nombre de los archivos a Main_iPad.storyboard y Main_iPone.storyboard

  3. Establecer nombres apropiados en .plist

4. Simplemente seleccione el .storyboard adecuado para configurar




Usando las clases de tamaño XCode6 ya no es necesario convertir el guión gráfico a iPad. El mismo Storyboard se puede usar tanto para el iPhone como para el iPad, lo que le evita tener 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 habilitar un guión gráfico o archivo xib para que 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 me golpearon con el mismo problema ayer. Los pasos que seguí

  1. Para Xcode 5.1, tuve que hacer una limpieza del guión gráfico de iPhone como reuseIdentifiers de celdas de tabla, proporcionar identificador de tabla de historias para cada controlador, eliminar escenas no utilizadas.
  2. Copie MainStoryboard_iPhone.storyboard en MainStoryboard_iPad.storyboard.
  3. Usando el editor vi - cambiado targetRuntime="iOS.CocoaTouch" a targetRuntime="iOS.CocoaTouch.iPad"
  4. Cambie el código en MainStoryboard_iPad.storyboard desde: <simulatedScreenMetrics key="destination" type="retina4"/> en <simulatedScreenMetrics key="destination"/>
  5. Abra el proyecto en Xcode.
  6. Cambió los dispositivos de implementación a Universal: eligió la opción NO copiar el guión gráfico de iPhone.
  7. Xcode asignará por defecto el objetivo de despliegue a 7.1, se encargó de las funciones obsoletas.
  8. Para corregir el error de vista extraviada en el Storyboard del iPad: se modificó el diseño del cuadro para los controladores que dan errores.

Eso fue todo. Gracias a todos por su ayuda.




Existe una solución realmente simple para las versiones de Xcode que admiten clases de tamaño (Probado en Xcode 7, que es la versión actual en el momento de la escritura). Marque la casilla de verificación "usar clases de tamaño" en un archivo de guión gráfico ( Inspector de archivos ), confirme el cuadro de diálogo que aparece. Luego desmarque esa misma casilla de verificación: Xcode le preguntará si desea usar este guión gráfico con un iPhone o iPad, y las convertirá adecuadamente. No es necesario editar directamente el archivo del guión gráfico . Para iPad y iPhone, simplemente copie el mismo guión gráfico y configure uno para iPad y otro para iPhone usando el método descrito.

Y antes de que alguien sugiera usar clases de tamaño, mientras que son geniales, son menos convenientes para una interfaz de usuario altamente personalizada, como juegos, etc.




De leer muchos hilos en descubrí que la solución es-

1.Duplique su 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ámbielo a <simulatedScreenMetrics key="destination"/>

4.Ahora guarde todo y haga clic derecho en MainStoryboard_iPad.storyboard "abrir como" -> "IOS StoryBoard" 5. también puede tener 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- Haga clic derecho en "MainStoryboard_iPad.storyboard" y "Abrir como -> Código fuente". Pegar 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 constructor de interfaz. Solo tendrá que volver a organizar.

Este método también se puede usar 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, centrándome solo en iPad iterando el UX con el equipo.

Hoy me concentré en desarrollar 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 de las dimensiones de iPad en el editor visual de guiones gráficos.

Así que escribí este pequeño guión de plantilla de python para escanear el archivo del guión gráfico para x, y, ancho, alto y escalar todo por una relación de 320./768. Me permitió entonces centrarme en los ajustes finos.

  1. Copie el guión gráfico de su iPad en un nuevo archivo. (por ejemplo, iPhoneStoryboard.storyboard)

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

  3. Generará un 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()



Related