Apa radius sudut pasti iPhone X?

10

Saya telah bereksperimen dan tidak menemukan radius sudut konklusif untuk iPhone X.

Menggunakan Xcode, saya membuat lingkaran dengan lebar dan panjang 80 (jadi jari-jari 40), dan meletakkannya di sudut kiri atas iPhone X (jadi x dan y adalah nol), ada celah putih kecil di antara lingkaran. dan tepi layar, yang bisa Anda lihat di sini:

Saya juga mencoba metode lain, melakukan ini dengan tombol:

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

Dengan ini saya dibiarkan dengan:

Jadi pertanyaannya adalah, apa radius sudut yang sebenarnya? Atau apa yang terjadi dengan Xcode?

chriscrutt
sumber

Jawaban:

15

Sudut iPhone X tidak memiliki radius sudut konklusif. Mereka bukan busur normal, mereka adalah ' sudut kontinu '.

Anda tidak dapat meniru ini dengan .cornerRadius sederhana, dan Anda juga tidak bisa menggunakan sudut kontinu milik Apple, karena itu adalah API pribadi.

CALayer di iOS 11 memiliki properti "continuousCorners" pribadi, yang menjadi kekuatan banyak sudut bulat di SpringBoard - dan kemungkinan lebih banyak! Sekarang aku cemburu.

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

Yang paling dekat yang bisa Anda dapatkan tanpa implementasi Anda sendiri adalah gambar persegi panjang bulat UIBezierPath, yang menggunakan _continuousRoundedRectBezierPath.

GRG
sumber
terima kasih banyak, ini jauh lebih masuk akal sekarang
chriscrutt
1

Brad Ellis memiliki sebuah artikel merinci kurva pada iPhone X .

[..] Sudut layar bulat iPhone X tidak menggunakan metode pembulatan klasik di mana Anda bergerak dalam garis lurus dan kemudian melengkung menggunakan kuadran tunggal lingkaran. Alih-alih, perhitungannya sedikit lebih rumit. Biasa disebut tupai, lereng mulai lebih cepat, tetapi lebih lembut.

Anda dapat melihat perbedaannya di sini:

masukkan deskripsi gambar di sini

Molombi
sumber
1

Baris Objective-C berikut

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

dieksekusi di simulator iOS 11.0.1 di iPhone X menghasilkan output berikut:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Jadi sepertinya di beberapa titik waktu, seseorang di Apple berpikir radius sudut adalah 39 poin. Saya kira itulah jawaban paling resmi yang akan kami dapatkan. :-) Tetapi seperti yang dijelaskan oleh jawaban lain, informasi itu tidak terlalu berguna ...

Bahkan informasi yang lebih berguna: Beberapa simulator iOS 11.0 dan 11.1 lainnya melaporkan _UITraitNameDisplayCornerRadius = 0.000000untuk iPhone tanpa sudut-sudut (mis. Lihat pertanyaan SO ini ), tetapi simulator untuk iOS 12.2 tidak menyertakan _UITraitNameDisplayCornerRadiusproperti dalam output log untuk UITraitCollection, dan begitu pula iPhone X nyata menjalankan iOS 11.2.1. Saya kira mereka menghapus properti ini dari output log di iOS 11.2 atau lebih.

PS: Saya kira itu tidak masalah, tapi saya mendapatkan hasil ini di Xcode 10.1.

jcsahnwaldt mengatakan GoFundMonica
sumber
1

Bentuk sudut tidak bisa digambarkan sebagai busur. Namun itu dapat direproduksi menggunakan API publik karena iOS 11. UIBezierPath.init(roundedRect:cornerRadius:)akan membuat persegi panjang dengan sudut bulat terus menerus.

Sumber: https://medium.com/fueled-engineering/continuous-rounded-corners-with-uikit-b575d50ab232

iOS 13 memperkenalkan cornerCurveproperti eksplisit di CALayer: https://developer.apple.com/documentation/quartzcore/calayercornercurve

Leon Deriglazov
sumber