ตรงที่หน้าจอพับและกาง
รองรับ iPhone Duo
ทำให้เลย์เอาต์ไม่พังตอนพับและกาง และสิ่งที่ผู้ใช้กำลังพิมพ์ค้างไว้ไม่หายไป
โค้ดที่แยกเงื่อนไขตามชื่อรุ่นเครื่อง จะพังอีกครั้งเมื่อเครื่องรุ่นถัดไปออกมา
ที่เพิ่มมาไม่ใช่ความละเอียดหนึ่งแบบ แต่เป็นสถานะหลายแบบ
เครื่องพับได้มีทั้งจอด้านนอกที่ใช้ตอนพับ และจอด้านในขนาดใหญ่ที่ใช้ตอนกาง แอปจึงต้องไปอยู่ในหลายสถานะ ทั้งพับ กาง หมุน แบ่งหน้าจอ และวินาทีสั้น ๆ ที่กำลังข้ามระหว่างกัน หน้าจอที่ตรึงไว้กับสถานะเดียวจะเพี้ยนในสถานะที่เหลือ ตัวอักษรถูกตัด ปุ่มเลื่อนไปอยู่ตำแหน่งที่นิ้วไม่ถึง และข้อความที่เขียนค้างไว้หายไป
เราทำอะไรบ้าง
-
ตัดสินจากขนาดหน้าต่าง ไม่ใช่ชื่อรุ่นเครื่อง
เราแก้ให้เลย์เอาต์ตัดสินจากขนาดหน้าต่างและพื้นที่ปลอดภัยที่ใช้ได้จริงตอนนั้น การแยกตามชื่อรุ่นต้องกลับมาแก้ทุกครั้งที่มีเครื่องใหม่ และจับกรณีที่ขนาดเปลี่ยนระหว่างใช้งานอย่างการแบ่งหน้าจอไม่ได้เลย
-
โครงสร้างที่เข้ากับหน้าจอตอนกาง
แทนที่จะดึงคอลัมน์เดียวให้ยาวเต็มความกว้างที่เพิ่มมา เราย้ายไปเป็นโครงสองคอลัมน์ที่วางรายการกับรายละเอียดคู่กัน และหน้าจอเดียวกันจะกลับมาเหลือคอลัมน์เดียวเมื่อพับเครื่อง
-
เว้นแนวรอยพับไว้
ถ้าแถบแท็บ ช่องพิมพ์ หรือปุ่มหลักไปทับเส้นรอยพับกลางจอ จะทั้งอ่านยากและกดยาก เราไล่ดูทีละสถานะว่ามีอะไรไปอยู่ตรงนั้นแล้วย้ายออก
-
พับแล้วกางก็ยังอยู่ครบ
เราตรวจว่าข้อความที่พิมพ์ค้าง ตำแหน่งการเลื่อน และตำแหน่งที่เล่นค้างไว้ ยังคงอยู่หลังเปลี่ยนสถานะ การพับไม่ใช่เหตุการณ์เดียวกับการหมุน ถ้าไม่ตรวจแยกต่างหากมันจะหายไปเงียบ ๆ
-
ไล่ดูทีละสถานะจริง
เราวางพับ กาง หมุน แบ่งหน้าจอ และกำลังเปลี่ยน ทีละอย่าง แล้วบันทึกว่าแต่ละหน้าจอแสดงผลอย่างไรในแต่ละสถานะ
บันทึกการปรับรองรับ
คุณจะได้บันทึกว่าสถานะไหนมีอะไรเพี้ยนและแก้อย่างไร พร้อมภาพหน้าจอ ครั้งต่อไปที่ทำหน้าจอใหม่ ใช้รายการสถานะในบันทึกนี้เป็นเช็กลิสต์ได้เลย
ขั้นตอนการทำงาน
-
ส่งแอปและหน้าจอที่สำคัญมา
ให้สิทธิ์อ่านที่เก็บโค้ดหรือไฟล์ติดตั้งได้ พร้อมบอกมาสักสองสามหน้าจอที่ห้ามพังเด็ดขาด
-
ตรวจทีละสถานะ
เราวางพับ กาง หมุน แบ่งหน้าจอ และกำลังเปลี่ยน ทีละอย่าง แล้วบันทึกว่าตรงไหนเพี้ยน
-
ตกลงขอบเขตและระยะเวลา
กำหนดจุดที่จะแก้และเวลาที่ต้องใช้ก่อน ยังไม่มีค่าใช้จ่ายจนกว่าจะตกลงกัน
-
แก้ไขและส่งมอบ
แก้ทั้งเลย์เอาต์และการเก็บสถานะ แล้วส่งคืนพร้อมบันทึกการทำงาน
เหมาะกับกรณีแบบนี้
- แอป iOS ที่อยู่บนสโตร์แล้ว แต่ทำเลย์เอาต์ไว้ตามขนาดหน้าจอเดียว
- แอปที่เดิมทีก็เพี้ยนอยู่แล้วบน iPad หรือตอนแบ่งหน้าจอ
- ทีมที่ยังมีโค้ดแยกเงื่อนไขตามชื่อรุ่นเครื่องหรือขนาดตายตัวหลงเหลืออยู่
คำถามที่พบบ่อย
- รองรับเฉพาะ iPhone Duo หรือเปล่า
- ไม่ใช่ครับ เพราะเราแก้ให้ตัดสินจากขนาดหน้าต่างที่ใช้ได้จริงตอนนั้นแทนชื่อรุ่น โค้ดชุดเดียวกันจึงครอบคลุมเครื่องพับได้ยี่ห้ออื่น iPad และการแบ่งหน้าจอไปด้วย ถ้าเพิ่มเงื่อนไขโดยดูแค่เครื่องรุ่นเดียว พอรุ่นถัดไปมาก็ต้องทำงานเดิมซ้ำอีกรอบ
- ต้องทำแอปใหม่ทั้งหมดไหม
- ส่วนใหญ่ไม่ต้องครับ งานอยู่ที่เลย์เอาต์และการเก็บสถานะ ถ้าแอปไหนจำเป็นต้องรื้อโครงหน้าจอจริง ๆ เราจะบอกตั้งแต่ขั้นตรวจสอบแล้วกำหนดขอบเขตกันใหม่
- ต้องมีเครื่องจริงไหม
- ไม่จำเป็นครับ เราสลับสถานะในซิมูเลเตอร์ได้ ถ้ามีเครื่องจริงด้วย เราจะดูเพิ่มว่าตอนถือในมือแล้วนิ้วโป้งเอื้อมถึงตรงไหนบ้าง
- แอปที่ทำด้วย React Native หรือ Flutter ได้ไหม
- ได้ครับ หลักการเดียวกัน เพียงแต่วิธีดึงขนาดหน้าต่างและพื้นที่ปลอดภัยต่างกันไปตามเฟรมเวิร์ก บอกมาว่าใช้ตัวไหน เราจะยืนยันขอบเขตที่ทำได้ให้ก่อน
- ต่างจากงานปรับตามข้อกำหนดของสโตร์อย่างไร
- งานตามข้อกำหนดของสโตร์คือการยกเวอร์ชันเป้าหมายเพื่อให้ผ่านการตรวจ ส่วนบริการนี้ไม่เกี่ยวกับการตรวจ แต่คือการรักษาเลย์เอาต์และสิ่งที่ผู้ใช้ทำค้างไว้ในสถานการณ์ที่หน้าจอใหญ่ขึ้นและพับได้ ถ้าให้ดูแลทั้งสองอย่าง เราจัดการให้ในรอบเดียว
เริ่มจากลองกางเครื่องดูสักครั้ง
บอกชื่อแอปกับหน้าจอสองสามหน้าที่ห้ามพังมา เราจะเริ่มจากหาว่าสถานะไหนทำให้มันเพี้ยน