Kesin iPhone X köşe yarıçapı nedir?


10

Deniyorum ve iPhone X için kesin bir köşe yarıçapı bulamadım.

Xcode kullanarak, 80 genişliğinde ve uzunluğunda bir daire oluşturdum (yarıçap 40) ve iPhone X'in sol üst köşesine koydum (böylece x ve y sıfır), daire arasında küçük bir beyaz boşluk var ve burada görebileceğiniz ekranın kenarı:

Ayrıca bir düğme ile bunu yaparak başka bir yöntem denedim:

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

Bununla birlikte:

Yani soru şu, gerçek köşe yarıçapı nedir? Veya Xcode ile neler oluyor?

Yanıtlar:


16

iPhone X köşeleri yok olması kesin köşe yarıçapı. Normal yaylar değiller, ' sürekli köşeler '.

Bunları basit bir .cornerRadius ile çoğaltamazsınız ve Apple'ın kendi sürekli köşelerini de kullanamazsınız, çünkü bu özel bir API'dir.

İOS 11'deki CALayer, SpringBoard'da birçok yuvarlatılmış köşeye ve muhtemelen daha fazlasına güç veren özel bir "sürekliCorners" özelliğine sahiptir! Şimdi kıskanıyorum.

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

Kendi uygulamanız olmadan alabileceğiniz en yakın UIBezierPath'ın yuvarlatılmış dikdörtgen çizimidir _continuousRoundedRectBezierPath.


çok teşekkür ederim bu şimdi çok daha mantıklı
chriscrutt

1

Brad Ellis sahiptir iPhone X eğrileri ayrıntılarıyla bir makale .

[..] iPhone X yuvarlak ekran köşeleri, düz bir çizgide hareket ettiğiniz ve daha sonra bir dairenin tek bir çeyreğini kullanarak yayladığınız klasik yuvarlama yöntemini kullanmaz. Bunun yerine, matematik biraz daha karmaşıktır. Genellikle bir sincap denir, eğim daha erken başlar, ancak daha yumuşaktır.

Farkı burada görebilirsiniz:

resim açıklamasını buraya girin


1

Aşağıdaki Objective-C çizgisi

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

iPhone X'daki iOS 11.0.1 simülatöründe yürütülen aşağıdaki çıktıyı üretir:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Yani zamanın bir noktasında gibi görünüyor , Apple'dan biri köşe yarıçapının 39 puan olduğunu düşündü. Sanırım alacağımız en resmi cevap bu. :-) Ama diğer cevapların açıkladığı gibi, bu bilgi çok yararlı değil ...

Daha da yararsız bilgiler: Diğer bazı iOS 11.0 ve 11.1 simülatörleri rapor _UITraitNameDisplayCornerRadius = 0.000000(bkz örn yuvarlak köşeler olmadan iPhone'lar için bu SO soru ), ancak iOS 12.2 için simülatör yok değil şunlardır _UITraitNameDisplayCornerRadiusiçin günlük üretimde mülkiyet UITraitCollectionve ne gerçek bir iPhone X yapar iOS 11.2.1 çalıştıran. Sanırım bu özelliği iOS 11.2'deki günlük çıktısından kaldırdılar.

Not: Sanırım önemli değil, ama bu sonuçları Xcode 10.1'de aldım.


1

Köşelerin şekli bir yay olarak tanımlanamaz. Bununla birlikte, iOS 11 UIBezierPath.init(roundedRect:cornerRadius:), sürekli yuvarlatılmış köşeleri olan bir dikdörtgen oluşturacağından genel API kullanılarak çoğaltılabilir .

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

iOS 13 cornerCurve, CALayer'da açık bir özellik tanıttı: https://developer.apple.com/documentation/quartzcore/calayercornercurve

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.