क्या मैं UIActivityIndicator का आकार बदल सकता हूं?


93

आवंटन के समय मैं इसे जो भी आकार देता हूं, यह केवल निश्चित आकार को दर्शाता है। क्या इसे बढ़ाना संभव है?

कोड:

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
                     CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                                      UIViewAutoresizingFlexibleRightMargin |
                                      UIViewAutoresizingFlexibleTopMargin |
                                      UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

जवाबों:


50

आकार शैली द्वारा तय किया गया है। यह एक मानकीकृत इंटरफ़ेस तत्व है, इसलिए एपीआई इसे पसंद नहीं करता है।

हालाँकि, आप शायद इस पर एक स्केलिंग परिवर्तन कर सकते हैं। हालांकि यह सुनिश्चित नहीं है कि यह इसे नेत्रहीन कैसे प्रभावित करेगा।

यूआई डिज़ाइन के नज़रिए से, आम तौर पर इन सामान्य मानकीकृत तत्वों को अकेले छोड़ना बेहतर है। उपयोगकर्ता को सिखाया गया है कि कुछ तत्व एक निश्चित आकार में दिखाई देते हैं और उनका मतलब विशिष्ट चीजों से है। मानक उपस्थिति को बदलना इंटरफेस व्याकरण को बदल देता है और उपयोगकर्ता को भ्रमित करता है।


14
कुछ संदर्भों में यह बहुत अच्छा है। हालाँकि, अगर यह एक स्पलैश स्क्रीन में है, और आप सभी देखते हैं तो यह लोगो है और शायद स्क्रीन के बीच में यह छोटा सा स्पिनर है, यह थोड़ा मूर्खतापूर्ण लगता है। मैं विश्वास नहीं कर सकता कि Apple सोचता है कि एक आकार-फिट-सभी UI तत्वों में एक अवधारणा है।
बेन लेगियरियो

6
@BenLeggiero आप के बारे में बात नहीं कर रहे हैं UIActivityIndicatorViewStyleWhiteLarge, लेकिन इसके बजाय छोटे आकार के बारे में, है ना? क्योंकि मुझे लगता है कि Largeखाली स्क्रीन पर भी इस संस्करण का आकार अच्छा है।
अर्थ-मायने

2
.whiteLargeक्या यह! धन्यवाद! मैंने भी सेट किया UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))और activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38)। 6 + / 7 + स्क्रीन पर डिफ़ॉल्ट एक बहुत छोटा है
रॉकहैमर

1
यदि आप आकार को बढ़ाने के लिए स्केलिंग परिवर्तन करते हैं तो यह धुंधला दिखाई देगा।
गंडाल्फ़ ४५ Gand

164

निम्नलिखित एक गतिविधि संकेतक बनाएगा 15px चौड़ा:

#import <QuartzCore/QuartzCore.h>

...

UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];

जब मैं टेकज़ेन के उत्तर की भावना को समझता हूं, तो मुझे नहीं लगता कि अपेक्षाकृत कम राशि द्वारा UIActivityIndicator का आकार समायोजित करना वास्तव में Apple के मानकीकृत इंटरफ़ेस मुहावरों का उल्लंघन है - क्या गतिविधि संकेतक 20px है या 15px उपयोगकर्ता की व्याख्या नहीं बदलेगा क्या चल रहा है


1
और आईपैड पर एक्टिविटी इंडिकेटर बहुत कम होते हैं, एक
वेब व्यू

4
यह पिक्सेल को बड़े पैमाने पर लगता है, इसलिए बड़ी मात्रा में स्वीकार्य नहीं है, दुर्भाग्य से।
Prewett

69

स्विफ्ट 3.0 और स्विफ्ट 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)

3
बिल्कुल वही जो मुझे चाहिए था। यह शीर्ष उत्तर होना चाहिए।
nocdib

मैं साधारण मामलों के लिए एक लाइन समाधान प्यार करता हूँ! अब एकमात्र मुद्दा यह है कि यह कैसे उर्फ ​​विरोधी है। दो बार आकार में यह एप्पल टीवी पर थोड़ा मोटा दिखता है
मिशेल डला'गाटा

@ MicheleDall'Agata अभी भी आईओएस में अच्छी गुणवत्ता वाले ग्राफिक्स प्रगति पट्टी के लिए कोई भी देशी समाधान नहीं है यदि आप कस्टम बनाना चाहते हैं तो यह अच्छा है लेकिन मैं ऐप आकार और एप्लिकेशन के प्रदर्शन के मूल bcoz का उपयोग करने का सुझाव देता हूं
हर्षिल कोटेक्स

@ हर्षिलकोटेचा दरअसल मुझे बाद में पता चला है कि (कम से कम टीवीओएस के लिए) आईबी में गतिविधि गियर के लिए एक शैली है जिसे "लार्ज व्हाइट" कहा जाता है। उस एक का सामान्य से दोगुना अनुपात होता है, जिसे मैंने लक्ष्य किया है। नियमित रूप से बहुत छोटे हैं, शायद एकल कोशिका के लिए अच्छा है।
मिशेल डेल'अगाता

45

UIActivityIndicator का आकार बदलना संभव है।

CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;

मूल आकार 1.0f है। अब आप अपने अनुसार आकार बढ़ाते और घटाते हैं।


3
let transform = CGAffineTransformMakeScale(1.5, 1.5) activityIndicator.transform = transform
रोहित फंड

11

Swift3

 var activityIndicator = UIActivityIndicatorView()
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
    activityIndicator.transform = transform
    activityIndicator.center = self.view.center
    activityIndicator.startAnimating()
    self.view.addSubview(activityIndicator)

3

यहाँ एक एक्सटेंशन है जो स्विफ्ट 3.0 के साथ काम करेगा और 0 स्केलिंग को रोकने के लिए जांच करेगा (या जो भी मूल्य आप निषिद्ध करना चाहते हैं):

extension UIActivityIndicatorView {
    func scale(factor: CGFloat) {
        guard factor > 0.0 else { return }

        transform = CGAffineTransform(scaleX: factor, y: factor)
    }
}

इसे 40 pts (2x) के पैमाने पर कॉल करें:

activityIndicatorView.scale(factor: 2.0)

2

वहाँ भी कई अन्य उपयोगी "CGAffineTransform" ट्रिक्स हैं जिनके साथ आप खेल सकते हैं। अधिक जानकारी के लिए कृपया Apple डेवलपर लाइब्रेरी संदर्भ देखें:

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html

सौभाग्य!


1

सबसे अच्छा आप कर सकते हैं whiteLargeशैली का उपयोग करें । let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

आकार में वृद्धि से UIActivityIndicatorViewसंकेतक का आकार उचित रूप से नहीं बदलता है, जैसा कि आप इन चित्रों में देख सकते हैं।छोटा सूचक "बड़ा" सूचक


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