รัศมีมุมของ iPhone X ที่ชัดเจนคืออะไร


10

ฉันได้ทำการทดลองและไม่พบรัศมีของข้อสรุปสำหรับ iPhone X

ใช้ Xcode ฉันสร้างวงกลมที่มีความกว้างและความยาว 80 (ดังนั้นรัศมี 40) และวางไว้ที่มุมซ้ายบนของ iPhone X (ดังนั้น x และ y เป็นศูนย์) มีช่องว่างสีขาวเล็ก ๆ ระหว่างวงกลม และขอบของหน้าจอซึ่งคุณสามารถดูได้ที่นี่:

ฉันลองวิธีอื่นโดยใช้ปุ่ม:

button.frame.size.height = 812
button.frame.size.width = 375
button.layer.cornerRadius = 40
button.center = self.view.center

ด้วยสิ่งนี้ฉันเหลืออยู่กับ:

ดังนั้นคำถามคือรัศมีมุมจริงคืออะไร? หรือเกิดอะไรขึ้นกับ Xcode?

คำตอบ:


16

iPhone X มุมไม่ได้มีรัศมีมุมข้อสรุป พวกมันไม่ใช่เส้นโค้งปกติมันเป็น ' มุมต่อเนื่อง '

คุณไม่สามารถทำซ้ำสิ่งเหล่านี้ด้วย. cornerRadius ที่เรียบง่ายและคุณไม่สามารถใช้มุมต่อเนื่องของ Apple ได้เนื่องจากเป็น API ส่วนตัว

CALayer บน iOS 11 มีคุณสมบัติ "ContinuousCorners" ส่วนตัวซึ่งเป็นขุมพลังมุมโค้งมนมากมายใน SpringBoard - และมีโอกาสมากขึ้น! ตอนนี้ฉันอิจฉา

https://twitter.com/argentumko/status/955773459463790592

ที่อยู่ใกล้คุณจะได้รับโดยไม่ต้องดำเนินการของคุณเองเป็นรูปวาดรูปสี่เหลี่ยมผืนผ้า UIBezierPath _continuousRoundedRectBezierPathของโค้งมนซึ่งการใช้งาน


ขอบคุณมากสิ่งนี้สมเหตุสมผลมากขึ้นในตอนนี้
chriscrutt

1

แบรดเอลลิสมีบทความรายละเอียดเส้นโค้งบน iPhone เอ็กซ์

[.. ] iPhone X มุมหน้าจอโค้งมนไม่ได้ใช้วิธีการปัดเศษแบบคลาสสิกที่คุณเคลื่อนที่เป็นเส้นตรงจากนั้นทำการอาร์คโดยใช้จตุภาคเดียวของวงกลม แต่คณิตศาสตร์นั้นซับซ้อนกว่าเล็กน้อย โดยทั่วไปเรียกว่ารูปวงกลมความลาดชันจะเริ่มเร็วขึ้น แต่จะอ่อนโยนกว่า

คุณสามารถเห็นความแตกต่างได้ที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่


1

บรรทัดวัตถุประสงค์ -C ต่อไปนี้

NSLog(@"%@", [self traitCollection]);

ดำเนินการในเครื่องมือจำลอง iOS 11.0.1 บน iPhone X สร้างผลลัพธ์ต่อไปนี้:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

ดูเหมือนว่าในบางช่วงเวลาบางคนที่ Apple คิดว่ารัศมีของมุมคือ 39 คะแนน ฉันเดาว่าเป็นคำตอบที่เป็นทางการที่สุดที่เราจะได้รับ :-) แต่ตามที่คำตอบอื่น ๆ อธิบายข้อมูลนั้นไม่มีประโยชน์มาก ...

ข้อมูลที่ไร้ประโยชน์มากขึ้น: รายงานจำลองเครื่อง iOS 11.0 และ 11.1 อื่น ๆ_UITraitNameDisplayCornerRadius = 0.000000สำหรับ iPhone ที่ไม่มีมุมโค้ง (เช่นดูคำถาม SO นี้ ) แต่เครื่องมือจำลองสำหรับ iOS 12.2 ไม่รวม_UITraitNameDisplayCornerRadiusคุณสมบัติในบันทึกผลลัพธ์สำหรับUITraitCollectionและ iPhone X จริง ๆ ใช้ iOS 11.2.1 ฉันเดาว่าพวกเขาลบคุณสมบัตินี้ออกจากบันทึกใน iOS 11.2 หรือมากกว่านั้น

PS: ฉันเดาว่ามันไม่สำคัญ แต่ฉันได้ผลลัพธ์เหล่านี้ใน Xcode 10.1


1

ไม่สามารถอธิบายรูปร่างของมุมได้ว่าเป็นส่วนโค้ง อย่างไรก็ตามมันสามารถทำซ้ำได้โดยใช้ API สาธารณะตั้งแต่ iOS 11 UIBezierPath.init(roundedRect:cornerRadius:)จะสร้างสี่เหลี่ยมผืนผ้าที่มีมุมโค้งมนอย่างต่อเนื่อง

ที่มา: https://medium.com/fueled-engineering/continuous-rounded-corners-with-uikit-b575d50ab232

iOS 13 แนะนำcornerCurveคุณสมบัติที่ชัดเจนเกี่ยวกับ CALayer: https://developer.apple.com/documentation/quartzcore/calayercornercurve

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.