स्विफ्टयूआई में, सिस्टम के गोल संस्करण को सभी शैलियों के लिए डिफ़ॉल्ट बनाने का कोई तरीका है? मैं ऐप में सभी टेक्स्ट के लिए सिस्टम शैलियों (.body, .title, .headline, आदि) में से एक का उपयोग कर रहा हूं।

उदाहरण के लिए, मैं इसे एक टेक्स्ट व्यू पर उपयोग कर सकता हूं

Text("some text")
    .font(.system(.body, design: .rounded))

मैं इस तरह अपने ऐप में प्रत्येक टेक्स्ट व्यू और फ़ील्ड को अपडेट करने से बचना चाहता हूं। डिफ़ॉल्ट रूप से गोलाकार डिज़ाइन का उपयोग करने के लिए पर्यावरण को बताने का कोई तरीका है?

5
radicalappdev 10 नवम्बर 2019, 18:55
मैंने @Environment(\.font) को संदर्भित किया, लेकिन यह केवल-पढ़ने के लिए दिखाई दिया
 – 
Asperi
10 नवम्बर 2019, 20:43

3 जवाब

आप नीचे की तरह Font पर एक एक्सटेंशन बना सकते हैं

  1. पैरामीटर फ़ॉन्ट size और weight
  2. पैरामीटर फ़ॉन्ट TextStyle

    extension Font {
       static func roundedFont(WithSize size: CGFloat, AndWeight weight:Weight) -> Font {
           return Font.system(size: size, weight: weight, design: .rounded)
       }
    
       static func roundedFont(_ style: Font.TextStyle) -> Font {
           return Font.system(style, design: .rounded)
       }
    }
    

आप इस तरह कॉल कर सकते हैं:

- Text("Hello").font(Font.roundedFont(WithSize: 15.0, AndWeight: .bold))
- Text("Hello").font(Font.roundedFont(.body))
0
Rohit Makwana 11 पद 2019, 16:04

यहां बताया गया है कि पर्यावरण फ़ॉन्ट को रूट व्यू में कैसे सेट किया जा सकता है, सभी सबव्यू में यह डिफ़ॉल्ट रूप से होगा।

var body: some View {
    NavigationView {
        VStack {
            NavigationLink(destination: Text("Details")) {
                Text("Link")
            }
            Text("Tap on image to find details")
        }
    }.environment(\.font, Font.system(.body, design: .rounded))
}
7
Asperi 10 नवम्बर 2019, 20:54
यह एक दृश्य में सभी पाठ के लिए एकल डिफ़ॉल्ट फ़ॉन्ट सेट करता है। मैं हमेशा गोलाकार डिज़ाइन का उपयोग करने का एक तरीका ढूंढ रहा हूं, चाहे मैं जिस शैली का उपयोग करूं। यह ऐसा नहीं करता है।
 – 
radicalappdev
10 नवम्बर 2019, 21:12
मुझे इस उत्तर की सादगी पसंद है। हालांकि, Text-नेविगेशन बार में दृश्य नए फ़ॉन्ट में नहीं बदले जाते हैं। और निम्नलिखित दृष्टिकोण के परिणामस्वरूप एक त्रुटि होती है कि Text अब स्ट्रिंग प्रोटोकॉल के अनुरूप नहीं है। .navigationBarTitle(Text("Title").environment(\.font, Font.custom(Fonts.plex, size: 28))) कोई भी विचार है कि फॉण्ट को पूरे सिस्टम में कैसे बदला जाए?
 – 
simibac
14 नवम्बर 2019, 15:32

आप Font पर एक एक्सटेंशन बना सकते हैं जिसमें एक फ़ंक्शन है जो स्वचालित रूप से डिज़ाइन को गोल करने के लिए सेट करता है, जबकि अभी भी आपको TextStyle सेट करने की अनुमति देता है

extension Font {
    static func roundedFont(_ style: Font.TextStyle) -> Font {
        Font.system(style, design: .rounded)
    }
}

फिर आप इसे इस तरह इस्तेमाल करेंगे:

struct ContentView: View {
    var body: some View {
        Text("Hello").font(.roundedFont(.body))
    }
}
2
Andrew 10 नवम्बर 2019, 21:36
मुझे अभी भी ऐप में प्रत्येक दृश्य को अपडेट करना होगा जो टेक्स्ट स्टाइल का उपयोग करता है, इसलिए मुझे नहीं लगता कि यह मेरी समस्या का समाधान कैसे करेगा।
 – 
radicalappdev
10 नवम्बर 2019, 21:41
मुझे नहीं लगता कि आप जो चाहते हैं उसे करने का कोई तरीका है। मुझे नहीं लगता कि आप सिस्टम फ़ॉन्ट को ओवरराइड कर सकते हैं
 – 
Andrew
10 नवम्बर 2019, 22:19