¿Conversión de iPhone xib a iPad xib?

¿Cómo lo haces? Vi un tutorial en video, pero la pantalla era demasiado pequeña. Además, aparte de cambiar el tamaño de la vista, ¿hay otros cambios importantes que tendría que hacer a mis aplicaciones de iphone para convertir a iPad?

Supongamos que tiene el SDK con Xcode 3 ,

  1. Abierto IB.
  2. Abra el XIB.
  3. Archivo -> Crea una versión para iPad usando máscaras de autoría.

Pude networkingucirlo a algunas cosas, así que aquí están los pasos que funcionaron para mí:

1) Haga una copy del file xib de iPhone y agréguelo a su proyecto

2) Haga clic derecho en el file (en xcode) y Abrir como> Código fuente

3) La segunda línea debería verse así:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> 

Remplazar con:

 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10"> 

4) Busque "IBCocoaTouchFramework" y reemplace todas las apariciones con "IBIPadFramework"

5) Guarde el file y abra como> Interface Builder – iOS

El file podría parecerse a un iPhone xib normal, pero para mí, una vez que cambié la barra de estado a "Negro" en el inspector de Atributos, el rest de la xib simplemente se "chafó" en un iPad xib

En Xcode 5 deberías simplemente:

Encontrar:

 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none"> 

Reemplazar por:

 <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none"> 

Tenga en count que solo estamos agregando .iPad a las properties type y targetRuntime .

Después de la apertura, simplemente select un nuevo Tamaño para ajustar. Ejemplo: pantalla completa del iPad.

XCode4:

En xcode 4 no podemos hacer eso para un solo xib, pero podemos crear las respectivas versiones de iPad a la vez.

Antes de configurar su proyecto para iPad, cuando se configura solo para iPhone, haga clic derecho en el destino y click duplicado.

Ahora select "duplicado y transición a ipad". Se crea un nuevo objective y un nuevo set de xibs. Debería networkingucirse un poco el trabajo.

Espero eso ayude.

Xcode 4 :

La function Crear una versión de iPad usando la function Máscaras de authentication se ha eliminado de Xcode 4. Ahora la forma más fácil es usar Xcode 3 para la conversión, ya que el formatting de file de punta (.xib) no cambió.

Xcode 3 y 4 ahora pueden instalarse en el mismo sistema simplemente seleccionando una carpeta diferente (consulte las instrucciones de installation en la image del disco).

De lo contrario, necesitará copyr / pegar los elementos de la interfaz de usuario de la versión de iPhone y volver a vincularlos a su código.

¿Qué hay de dejar que la computadora haga el trabajo de la computadora?
Más rápido, less riesgo de errores.

Aquí hay un flujo de trabajo basado en la excelente respuesta de Jag , pero automatizado con sed.

Primero, configuremos algunas cosas. Solo tendremos que hacer esto una vez.
En el directory que contiene sus XIB, cree dos files con el siguiente contenido:

Archivo iPhoneToiPadXIBConversion.sed :

 s/com.apple.InterfaceBuilder3.CocoaTouch.XIB/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g s/IBCocoaTouchFramework/IBIPadFramework/g 

y file iPadToiPhoneXIBConversion.sed :

 s/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/com.apple.InterfaceBuilder3.CocoaTouch.XIB/g s/IBIPadFramework/IBCocoaTouchFramework/g 

La installation ya está terminada. Para convertir un XIB, ingrese uno de los dos commands siguientes en el terminal:

Conversión de iPhone a iPad:

 sed -f iPhoneToiPadXIBConversion.sed MyViewController~iphone.xib > MyViewController.xib 

Conversión de iPad a iPhone:

 sed -f iPadToiPhoneXIBConversion.sed MyViewController.xib > MyViewController~iphone.xib 


Solo por diversión, creamos dos funciones en zsh, para hacer la conversión aún más simple:

 function convertiPadXIBToiPhone () { newXibName=`echo "$1" | /usr/bin/sed "s/.xib/~iphone.xib/"` `/usr/bin/sed -f iPadToiPhoneXIBConversion.sed "$1" > "$newXibName"` echo "Did convert $1 to $newXibName." } function convertiPhoneXIBToiPad () { newXibName=`echo "$1" | /usr/bin/sed "s/~iphone.xib/.xib/"` `/usr/bin/sed -f iPhoneToiPadXIBConversion.sed "$1" > "$newXibName"` echo "Did convert $1 to $newXibName." } 

Después de haber agregado esto a su configuration zsh, convertir un XIB es simple:

 convertiPadXIBToiPhone MyViewController.xib 

o

 convertiPhoneXIBToiPad MyViewController.xib 

Abra el XIB en XCode 4 usando "ver como código fuente".

antes de

Realice una copy de security de la punta en cuestión.

Uno

Sustituye a este goo

  <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string> <object class="NSMutableDictionary" key="IBDocument.PluginDeclanetworkingDependencyDefaults"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string> <integer value="1056" key="NS.object.0"/> </object> <object class="NSMutableDictionary" key="IBDocument.PluginDeclanetworkingDevelopmentDependencies"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string> <integer value="3100" key="NS.object.0"/> </object> <bool key="IBDocument.PluginDeclanetworkingDependenciesTrackSystemTargetVersion">YES</bool> <int key="IBDocument.defaultPropertyAccessControl">3</int> <string key="IBCocoaTouchPluginVersion">301</string> 

para este otro goo

  <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string> <object class="NSMutableDictionary" key="IBDocument.PluginDeclanetworkingDevelopmentDependencies"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string> <integer value="3100" key="NS.object.0"/> </object> <bool key="IBDocument.PluginDeclanetworkingDependenciesTrackSystemTargetVersion">YES</bool> <int key="IBDocument.defaultPropertyAccessControl">3</int> <string key="IBCocoaTouchPluginVersion">301</string> 

Dos

Luego, para cada vista en la punta usando el IB integrado, bórrelo y luego presione Deshacer.

Tres

Luego, báñese en agua caliente para eliminar esa sensación desagradable que pueda tener.

Puede abrir el XIB como file de text y cambiar el tamaño de UIView:

Haga clic derecho en su file XIB en el browser y select: "abrir como …" Abrir como file fuente.

Encuentre la reference de UIView y cambie los valores de Marco:

 <object class="IBUIView" id="191373211"> <string key="NSFrame">{{0, 20}, {768, 1024}}</string> 

En XCode 4.3.2, la forma más fácil para mí para crear la versión para iPad de xib es duplicar ese file xib y agregar el sufijo ~ipad al nombre de file. Y añada tanto "myVC.xib" como "myVC ~ ipad.xib" en su proyecto. Tenga en count que es "~ ipad" NO "~ iPad". Tu aplicación usará esa versión de ipad automáticamente cuando se ejecute en iPad. Esto también funciona con files de resources (por ejemplo, imágenes).

La mejor reference que pude encontrar en este momento … https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html

Actualización de Xcode 5

targetRuntime = "iOS.CocoaTouch"

a

targetRuntime = "iOS.CocoaTouch.iPad"

Documentaré lo que hice en Xcode 4.5:

  1. fixpattern.sh

     cp REPLACEME_Iphone.h REPLACEME_Ipad.h sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.h > REPLACEME_Ipad_tmp.h mv REPLACEME_Ipad_tmp.h REPLACEME_Ipad.h cp REPLACEME_Iphone.m REPLACEME_Ipad.m sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.m > REPLACEME_Ipad_tmp.m mv REPLACEME_Ipad_tmp.m REPLACEME_Ipad.m cp REPLACEME_Iphone.xib REPLACEME_Ipad.xib sed -e 's/com.apple.InterfaceBuilder3.CocoaTouch.XIB /com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib sed -e 's/IBCocoaTouchFramework/IBIPadFramework/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib sed -e 's/320, 416/768, 1004/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib 
  2. Cree una list del file que desea convertir en fixfile , cada línea será un nombre de file sin extensión. Si su nombre de file original es AAA_Iphone.h , simplemente coloque AAA . Si su file original no es de este patrón, debe revisar el script.

  3. Ejecutar en la línea de command

     cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh 
  4. Revise y ejecute fixall.sh

  5. Agregue el file recién creado al proyecto

La respuesta de Jag es genial. Pero hay una captura si se abre / crea un XIB en Xcode 5.

Para Xcode 5

1) Haga una copy del file xib de iPhone y agréguelo a su proyecto

2) Haga clic derecho en el file (en xcode) y Abrir como> Código fuente

3) La segunda línea debería verse así:

 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" 

cambiarlo por

 <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" 

4) La octava línea debería verse así:

 <rect key="frame" x="0.0" y="0.0" width="320" height="480"/> 

cambiarlo por

 <rect key="frame" x="0.0" y="64" width="768" height="960"/> 

Eso es todo y allí tienes iPad XIB. Pero aún el verdadero crédito es para Jag.

Además de la respuesta dada por Jag, también busque "320,460" y reemplácelo por 768,1024 y su XIB cambiará de tamaño a las dimensiones de iPad.

Para Xcode 4,

No necesita crear un objective por separado para cada dispositivo. En cambio, puede cambiar los Dispositivos en el resumen del proyecto a Universal, que ya estaría en el iPhone. Esto se responde en el enlace Actualización de la aplicación iOS 5 a Universal en Xcode 4.2. Por lo tanto, hará la transición por ti.

Parece que la mejor solución es desarrollar siempre como iPhone primero, luego una vez que haya terminado, agregue el objective de iPad, dejando que xcode haga la actualización. Cometí el mismo error, seleccionado universal para comenzar, que crea los primeros files, pero todos los demás xib tuvieron que ser recreados manualmente en la carpeta de ipad. Dolor grande

 Jag has given Great Answer. 

En algunos casos.

No es necesario convertir tu Iphone XIB en Ipad XIB. Puede usar Autoresizingmask y get Running Ipad también. solo tiene que configurar su APP para que se ejecute en modo Universal con la máscara de autoría adecuada.