Oto coś, co pozwoliło mi zaoszczędzić wiele godzin i może pomóc osobom z umiejętnościami w Pythonie.
Tworzę aplikację przez ostatnie dwa miesiące, koncentrując się na iPadzie iterującym UX z zespołem.
Dzisiaj skupiłem się na zbudowaniu wersji iPhone'a, wykonując powyższe kroki (dzięki!), Ale nie chciałem wtedy zmieniać rozmiaru wszystkich elementów interfejsu użytkownika z wymiarów iPada w edytorze wizualnej scenorysu.
Napisałem więc ten mały skrypt jig Pythona, aby skanować plik scenorysu w poszukiwaniu x, y, szerokości, wysokości i przeskalować wszystko o współczynnik 320/768. Pozwoliło mi to skupić się na drobnych korektach.
Skopiuj scenorys iPada do nowego pliku. (np. iPhoneStoryboard.storyboard)
Uruchom skrypt poniżej z skopiowaną nazwą pliku scenariusza jako pierwszym parametrem.
Wygeneruje plik wyjściowy z przyrostkiem _adjusted.storyboard (np. IPhoneStoryboard.storyboard_adjusted.storyboard)
Mam nadzieję, że to pomoże...
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()