นี่คือสิ่งที่ช่วยฉันชั่วโมงและช่วยพวกคุณด้วยทักษะ Python
ฉันได้สร้างแอพในช่วงสองเดือนที่ผ่านมาโดยมุ่งเน้นที่การทำซ้ำ iPad กับทีม UX
วันนี้มุ่งเน้นไปที่การสร้างเวอร์ชั่น iPhone ทำตามขั้นตอนข้างต้น (ขอบคุณ!) แต่ฉันไม่ต้องการที่จะต้องปรับขนาดองค์ประกอบ UI ทั้งหมดจากขนาด iPad ในตัวแก้ไขกระดานเรื่องราวที่มองเห็น
ดังนั้นฉันจึงเขียนสคริปต์ python jig ตัวน้อยนี้เพื่อสแกนไฟล์ Storyboard สำหรับ x, y, width, height และ scale ทุกอย่างลงตามอัตราส่วน 320./768 ทำให้ฉันต้องมุ่งเน้นไปที่การปรับแบบละเอียด
คัดลอกสตอรีบอร์ด iPad ของคุณลงในไฟล์ใหม่ (เช่น iPhoneStoryboard.storyboard)
เรียกใช้สคริปต์ด้านล่างด้วยชื่อไฟล์สตอรีบอร์ดที่คัดลอกเป็นพารามิเตอร์แรก
จะสร้างไฟล์เอาต์พุตด้วยคำต่อท้าย _adjusted.storyboard (เช่น iPhoneStoryboard.storyboard_adjusted.storyboard)
หวังว่ามันจะช่วย ...
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()