İşte beni saatlerce kurtaran ve Python yeteneklerine sahip olanlara yardım edebilecek bir şey.
Son iki aydır, yalnızca iPad ile UX'i ekiple yinelemeye odaklanan bir uygulama geliştiriyorum.
Bugün iPhone sürümünü oluşturmaya odaklandı, yukarıdaki adımları takip etti (teşekkürler!) Ancak daha sonra görsel film şeridi düzenleyicisindeki iPad boyutlarından tüm ui öğelerini yeniden boyutlandırmak istemedim.
Bu yüzden, x, y, genişlik, yükseklik için film şeridi dosyasını taramak ve her şeyi 320./768 oranına göre ölçeklendirmek için bu küçük python jig komut dosyasını yazdım. O zaman sadece ince ayarlara odaklanmama izin verdi.
İPad film şeridinizi yeni bir dosyaya kopyalayın. (örneğin iPhoneStoryboard.storyboard)
Aşağıdaki komut dosyasını kopyalanan film şeridi dosya adıyla ilk parametre olarak çalıştırın.
_Adjusted.storyboard soneki ile çıktı dosyası oluşturur (örn. İPhoneStoryboard.storyboard_adjusted.storyboard)
Umarım yardımcı olur...
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()