Voici quelque chose qui m'a fait gagner des heures et pourrait aider ceux d'entre vous ayant des compétences en Python.
Je construis une application depuis deux mois, axée uniquement sur l'iPad en itérant l'UX avec l'équipe.
Aujourd'hui, je me suis concentré sur la création de la version iPhone, j'ai suivi les étapes ci-dessus (merci!) Mais je ne voulais pas avoir à redimensionner tous les éléments de l'interface utilisateur à partir des dimensions de l'iPad dans l'éditeur de storyboard visuel.
J'ai donc écrit ce petit script de gabarit en python pour parcourir le fichier de storyboard pour x, y, largeur, hauteur et tout réduire par le rapport 320./768. Me permet alors de me concentrer uniquement sur les réglages fins.
Copiez votre storyboard iPad dans un nouveau fichier. (par exemple iPhoneStoryboard.storyboard)
Exécutez le script ci-dessous avec le nom de fichier du storyboard copié comme premier paramètre.
Générera un fichier de sortie avec le suffixe _adjusted.storyboard (par exemple iPhoneStoryboard.storyboard_adjusted.storyboard)
J'espère que ça aide...
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()