Ecco qualcosa che mi ha risparmiato ore e potrebbe aiutare quelli di voi con le abilità di Python.
Ho creato un'app negli ultimi due mesi, concentrandomi solo sull'iPad che esegue l'iter della UX con il team.
Oggi concentrato sulla creazione della versione per iPhone, ho seguito i passaggi sopra (grazie!), Ma non volevo quindi ridimensionare tutti gli elementi dell'interfaccia utente dalle dimensioni di iPad nell'editor di storyboard visivo.
Così ho scritto questo piccolo script jig in pitone per scansionare il file dello storyboard per x, y, larghezza, altezza e ridimensionare tutto in base al rapporto 320./768. Mi ha permesso quindi di concentrarmi solo sulle regolazioni fini.
Copia lo storyboard del tuo iPad in un nuovo file. (ad es. iPhoneStoryboard.storyboard)
Esegui lo script seguente con il nome file dello storyboard copiato come primo parametro.
Genera file di output con suffisso _adjusted.storyboard (ad es. IPhoneStoryboard.storyboard_adjusted.storyboard)
Spero che sia d'aiuto...
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()