web-dev-qa-db-fra.com

Convertir iPhone xib en iPad xib?

Comment faites-vous? J'ai vu un didacticiel vidéo dessus, mais l'écran était trop petit. En plus de changer la taille de la vue, y a-t-il d'autres changements majeurs que je devrais apporter à mes applications iPhone pour les convertir en iPad?

75
NextRev

Supposons que vous ayez le SDK avec Xcode,

  1. Ouvrez IB.
  2. Ouvrez le XIB.
  3. Fichier -> Créer une version iPad en utilisant des masques de redimensionnement automatique.
29
kennytm

J'ai pu le réduire à quelques choses, voici donc les étapes qui ont fonctionné pour moi:

1) Faites une copie du fichier iPhone xib et ajoutez-le à votre projet

2) Faites un clic droit sur le fichier (en xcode) et ouvrez en tant que> code source

3) La 2e ligne devrait ressembler à:

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

Remplacer par:

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

4) Recherchez "IBCocoaTouchFramework" et remplacez toutes les occurrences par "IBIPadFramework"

5) Enregistrez le fichier et ouvrez-le sous> Interface Builder - iOS

Le fichier peut toujours ressembler à un iPhone xib normal, mais pour moi, une fois que j'ai changé la barre d'état en "Noir" dans l'inspecteur des attributs, le reste du xib vient de "s'enclencher" dans un iPad xib

159
Jag

Dans Xcode 5, vous devez simplement:

Trouver:

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

Remplacer par:

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

Notez que nous ajoutons juste . IPad aux propriétés type et targetRuntime.

Après ouverture, sélectionnez simplement une nouvelle taille à ajuster. Exemple: iPad plein écran.

33
SebastianView

XCode4:

Dans xcode 4, nous ne pouvons pas le faire pour un seul xib, mais nous pouvons créer les versions respectives de l'ipad en une seule fois.

Avant de configurer votre projet sur iPad, lorsqu'il est configuré uniquement pour iPhone, faites un clic droit sur la cible et cliquez sur dupliquer.

Maintenant, sélectionnez "dupliquer et passer à l'ipad". Une nouvelle cible et un nouvel ensemble de xibs sont créés. Cela devrait réduire le travail.

J'espère que ça aide.

22
Tejesh Alimilli

Xcode 4:

La fonction Créer une version iPad à l'aide de masques de redimensionnement automatique a été supprimée de Xcode 4. À l'heure actuelle, la façon la plus simple consiste à utiliser Xcode 3 pour la conversion, car la plume (.xib) le format de fichier n'a pas changé.

Xcode 3 & 4 peut désormais être installé sur le même système en sélectionnant simplement un dossier différent (voir les instructions d'installation sur l'image disque).

Sinon, vous devrez copier/coller les éléments de l'interface utilisateur de la version iPhone et les lier à nouveau à votre code.

14
antalkerekes

Qu'en est-il de laisser l'ordinateur faire le travail de l'ordinateur?
Plus rapide, moins de risques d'erreurs.

Voici un workflow basé sur le excellente réponse de Jag , mais automatisé avec sed.

Tout d'abord, configurons quelques trucs. Nous n'aurons besoin de le faire qu'une seule fois.
Dans le répertoire qui contient vos XIB, créez deux fichiers avec le contenu suivant:

Fichier iPhoneToiPadXIBConversion.sed:

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

et fichier iPadToiPhoneXIBConversion.sed:

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


La configuration est maintenant terminée. Pour convertir un XIB, entrez l'une des deux commandes suivantes dans le terminal:

Conversion iPhone vers iPad:

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

Conversion d'iPad en iPhone:

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





Juste pour le plaisir, créons deux fonctions en zsh, pour rendre la conversion encore plus 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."
}

Après l'avoir ajouté à votre configuration zsh, la conversion d'un XIB est aussi simple que:

convertiPadXIBToiPhone MyViewController.xib

ou

convertiPhoneXIBToiPad MyViewController.xib
6
Guillaume

Ouvrez le XIB dans XCode 4 en utilisant "voir comme code source".

Avant

Sauvegardez la plume en question.

Une

Remplacer cette glu

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

pour cet autre goo

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

Deux

Ensuite, pour chaque vue de la plume à l'aide de l'IB intégré, supprimez-la, puis appuyez sur Annuler.

Trois

Douche ensuite dans l'eau chaude pour essuyer cette sensation dégoûtante que vous pourriez avoir.

5
Dan Rosenstark

Vous pouvez ouvrir le XIB en tant que fichier texte et modifier la taille UIView:

Faites un clic droit sur votre fichier XIB dans le navigateur et sélectionnez: "Ouvrir en tant que ..." Ouvrir en tant que fichier source.

Recherchez la référence UIView et modifiez les valeurs de trame:

<object class="IBUIView" id="191373211">

<string key="NSFrame">{{0, 20}, {768, 1024}}</string>
4
wasigh

Dans XCode 4.3.2, la façon la plus simple pour moi de créer une version iPad de xib est de dupliquer ce fichier xib et d'ajouter ~ipad suffixe du nom de fichier. Et ajoutez à la fois "myVC.xib" et "myVC ~ ipad.xib" dans votre projet. Notez qu'il s'agit de "~ ipad" PAS "~ iPad". Votre application utilisera cette version ~ ipad automatiquement lorsqu'elle sera exécutée sur iPad. Cela fonctionne également avec les fichiers de ressources (par exemple, les images).

La meilleure référence que j'ai pu trouver en ce moment ... https://developer.Apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html

3
Hlung

Mise à jour Xcode 5

targetRuntime = "iOS.CocoaTouch"

à

targetRuntime = "iOS.CocoaTouch.iPad"

3
0oneo

Je vais documenter ce que j'ai fait dans 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. Créez une liste de fichiers que vous souhaitez convertir dans fixfile, chaque ligne sera un nom de fichier sans extension. Si votre nom de fichier d'origine est AAA_Iphone.h, il suffit de mettre AAA. Si votre fichier d'origine ne correspond pas à ce modèle, vous devez réviser le script.

  3. Exécuter en ligne de commande

    cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
    
  4. Vérifier et exécuter fixall.sh

  5. Ajouter un fichier nouvellement créé dans le projet

2
user2329407

La réponse de Jag est excellente. Mais il y a un hic si un XIB est ouvert/créé dans Xcode 5.

Pour Xcode 5

1) Faites une copie du fichier iPhone xib et ajoutez-le à votre projet

2) Faites un clic droit sur le fichier (en xcode) et ouvrez en tant que> code source

3) La 2e ligne devrait ressembler à:

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

le changer en

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

4) La 8ème ligne devrait ressembler à ceci:

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

le changer en

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

C'est tout et là vous avez l'iPad XIB. Mais le vrai mérite revient toujours à Jag.

2
Evol Gate

En plus de la réponse donnée par Jag, recherchez également "320,460" et remplacez-le par 768,1024 et votre XIB sera redimensionné aux dimensions de l'iPad.

1
Farooq Nasim Ahmad

Pour Xcode 4,

Vous n'avez pas besoin de créer une cible distincte pour chaque appareil. Au lieu de cela, vous pouvez remplacer les périphériques dans le résumé du projet par Universal, ce qui serait déjà dans l'iPhone. Ceci est répondu dans le lien Mise à jour de l'application iOS 5 vers Universal sur Xcode 4.2. Ainsi, il fera la transition pour vous.

1
aparna
Jag has given Great Answer.

Dans certains cas.

Pas besoin de convertir votre Iphone XIB en Ipad XIB. Vous pouvez utiliser le masque de redimensionnement automatique et exécuter également Ipad. suffit de configurer votre application pour qu'elle s'exécute en mode universel avec un masque de redimensionnement automatique approprié.

0
kalpesh jetani

Il suffit de remplacer

<document type="com.Apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch"

avec

<document type="com.Apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch.iPad"
0
Tony Pham

On dirait que la meilleure solution est de toujours développer en tant qu'iphone d'abord, puis une fois que vous avez terminé, ajoutez la cible ipad, en laissant xcode faire la mise à jour. J'ai fait la même erreur, sélectionné universel pour commencer, ce qui crée les premiers fichiers, mais ensuite tous les autres xib ont dû être recréés à la main dans le dossier ipad. Grosse douleur

0
nwestwood