Inilah sesuatu yang menyelamatkan saya berjam-jam dan mungkin membantu Anda dengan keterampilan Python.
Saya telah membangun sebuah aplikasi selama dua bulan terakhir, fokus hanya pada iPad yang mengulang UX bersama tim.
Hari ini fokus membangun versi iPhone, mengikuti langkah-langkah di atas (terima kasih!) Tapi saya tidak ingin kemudian harus mengubah ukuran semua elemen ui dari dimensi iPad di editor storyboard visual.
Jadi saya menulis skrip python jig kecil ini untuk memindai melalui file storyboard untuk x, y, lebar, tinggi dan skala semuanya turun dengan rasio 320./768. Maka saya diizinkan untuk hanya fokus pada penyesuaian halus.
Salin papan cerita iPad Anda ke file baru. (mis. iPhoneStoryboard.storyboard)
Jalankan skrip di bawah ini dengan nama file storyboard yang disalin sebagai parameter pertama.
Akan menghasilkan file keluaran dengan suffix _adjusted.storyboard (mis. IPhoneStoryboard.storyboard_adjusted.storyboard)
Semoga ini bisa membantu ...
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()