निश्चित 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 एक्स कोनों नहीं है है एक निर्णायक कोने की त्रिज्या। वे सामान्य चाप नहीं हैं, वे ' निरंतर कोने ' हैं।

आप इन्हें एक साधारण .corneradius के साथ दोहरा नहीं सकते हैं, और आप Apple के निरंतर कोनों का उपयोग नहीं कर सकते, क्योंकि यह एक निजी एपीआई है।

IOS 11 पर काइलेर के पास एक निजी "निरंतर कॉर्नर" संपत्ति है, जो कि स्प्रिंगबॉर्ड में कई गोल कोनों को शक्ति प्रदान करता है - और अधिक संभावना है! अब मुझे जलन हो रही है।

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

आपके स्वयं के कार्यान्वयन के बिना निकटतम आप UIBezierPath की गोल आयताकार ड्राइंग हो सकते हैं, जो उपयोग करता है _continuousRoundedRectBezierPath


बहुत बहुत धन्यवाद अब यह इतना अधिक समझ में आता है
क्रिसट्रैट

1

ब्रैड एलिस ने एक लेख iPhone X पर घटता का विवरण दिया है

[..] iPhone X राउंडेड स्क्रीन कॉर्नर क्लासिक राउंडिंग विधि का उपयोग नहीं करते हैं जहां आप एक सीधी रेखा में चलते हैं और फिर एक वृत्त के एक चतुर्थांश का उपयोग करते हुए चाप करते हैं। इसके बजाय, गणित थोड़ा अधिक जटिल है। आमतौर पर स्क्वैरिकल कहा जाता है, ढलान जल्दी शुरू होता है, लेकिन अधिक कोमल होता है।

आप यहां अंतर देख सकते हैं:

यहां छवि विवरण दर्ज करें


1

निम्नलिखित उद्देश्य-सी लाइन

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

iPhone X पर iOS 11.0.1 सिम्युलेटर में निष्पादित निम्नलिखित आउटपुट उत्पन्न करता है:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

तो ऐसा लगता है कि कुछ समय में, Apple में किसी ने सोचा था कि कोने का दायरा 39 अंक था। मुझे लगता है कि हमें सबसे अधिक आधिकारिक उत्तर मिलेगा। :-) लेकिन जैसा कि अन्य उत्तर बताते हैं, यह जानकारी बहुत उपयोगी नहीं है ...

और भी बेकार जानकारी: _UITraitNameDisplayCornerRadius = 0.000000गोल कोनों के बिना आईफ़ोन के लिए कुछ अन्य iOS 11.0 और 11.1 सिमुलेटर रिपोर्ट (उदाहरण के लिए यह SO प्रश्न देखें ), लेकिन iOS 12.2 के लिए सिम्युलेटर में लॉग आउटपुट के लिए संपत्ति शामिल नहीं है , और न ही एक वास्तविक iPhone X iOS 11.2.1 पर चल रहा है। मुझे लगता है कि उन्होंने इस संपत्ति को iOS 11.2 में लॉग आउटपुट से हटा दिया।_UITraitNameDisplayCornerRadiusUITraitCollection

पुनश्च: मुझे लगता है कि यह कोई फर्क नहीं पड़ता, लेकिन मुझे Xcode 10.1 पर ये परिणाम मिले।


1

कोनों का आकार एक चाप के रूप में वर्णित नहीं किया जा सकता है। हालांकि इसे iOS 11 के बाद से सार्वजनिक एपीआई का उपयोग करके पुन: पेश किया जा सकता है, UIBezierPath.init(roundedRect:cornerRadius:)जो निरंतर गोल कोनों के साथ एक आयत बनाएगा।

स्रोत: https://medium.com/fueled-engineering/continuous-rounded-corners-with-uikit-b575d50ab232

iOS 13 ने cornerCurveCALayer पर एक स्पष्ट संपत्ति प्रस्तुत की : https://developer.apple.com/documentation/quartzcore/calayercercercve

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.