2015-07-07 8 views
16

में UIProgressView की ऊंचाई बदले मैं आकार और एक प्रगति देखने का रोटेशन बदलने स्क्रीन के आकार को अपनाने की कोशिश कर रहा हूँ। यह मूल रूप से फोन की स्क्रीन पर एक भरने गिलास प्रभाव है कार्य करेगा।स्विफ्ट

मैं इसे self.masteryProgress.transform = CGAffineTransformMakeRotation((CGFloat(-90)/CGFloat(180.0) * CGFloat(M_PI)))

का उपयोग करके काफी हानि पहुंचाए बिना घुमाया मैं दृश्य स्क्रीन रेक्ट और चौड़ाई x ऊँचाई प्राप्त करने की कोशिश view.bounds का उपयोग कर encasing के आकार मिला है। इसलिए मैं वहाँ अटक नहीं कर रहा हूँ।

मैंने .frame.drawRect का उपयोग करने की कोशिश की लेकिन जब मैं उन लोगों का उपयोग करता हूं तो उन्हें तोड़ता है या कुछ भी नहीं करता है।

ऊंचाई विशेषता इंटरफ़ेसबिल्डर में 2 के निरंतर मान पर लॉक लगती है।

कोई समाधान इससे पहले कि मैं एक कस्टम एनिमेशन का निर्माण?

मैंने इंटरफ़ेस में प्रगति पट्टी की ऊंचाई निर्धारित करने की कोशिश की, कुछ अन्य पोस्टों की तरह बिल्डर ने कहा, लेकिन मुझे प्रगति दृश्य पूरी स्क्रीन भरने की ज़रूरत है इससे कोई फर्क नहीं पड़ता कि यह किस डिवाइस पर चल रहा है ताकि समाधान मेरे मामले में काम नहीं करेगा ।

मैं जब से मैं progressView खड़ी घूर्णन कर रहा हूँ CGAffineTransformScale(masteryProgress.transform, view.bounds.height/1334, (view.bounds.width/2))

का उपयोग कर समाप्त हो गया है, मैं 1334 (iPhone 6 Plus की ऊंचाई) की चौड़ाई के लिए प्रगति देख सकते हैं और 2. की ऊंचाई से विभाजित करके सेट इन मूल्यों से स्क्रीन की ऊंचाई यह पूरी तरह किसी भी फोन आकार देना चाहिए।

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/18717895/प्रगति-दृश्य-ऊंचाई-इन-आईओएस -7) –

+0

Plesae पिछले प्रश्न की जांच करें। स्टोरीबोर्ड में ऑटोलायआउट मार्ग भी लगाया जा सकता है। –

+0

@WonjugKim यह अच्छा और सब कुछ है, लेकिन मुझे स्क्रीन के आकार में आकार बदलने की आवश्यकता है और इंटरफ़ेस बिल्डर केवल आपको स्थिर रूप से आकार देने देता है। –

उत्तर

55

आप सेट द्वारा यह माप सकते हैं अपनी तो जैसे परिणत:

स्विफ्ट 2

masteryProgress.transform = CGAffineTransformScale(masteryProgress.transform, 1, 20) 

स्विफ्ट 3,4

masteryProgress.transform = masteryProgress.transform.scaledBy(x: 1, y: 20) 

enter image description here

+0

मैं पहले CGAffineTransformMakeScale का उपयोग कर रहा था। धन्यवाद! –

+0

हाय वहाँ, मैं अपने बार के लिए इस कोड का उपयोग करने की कोशिश कर रहा हूं, लेकिन दुर्भाग्य से मेरा तिरछे भर जाता है ... कोई विचार? – dwinnbrown

+0

यदि आप @Bannings http://stackoverflow.com/questions/31453454/swift-uiprogressview-fills-diagonally – dwinnbrown

6

गु काम करेगा:

masteryProgress.transform = CGAffineTransformMakeScale(1, 4) 
12

ट्रांसफॉर्म अभी भी इसे पूरा करने का एकमात्र तरीका प्रतीत होता है। एक विस्तार इतना तरह UIProgressView के रूप में इसे जोड़ने का प्रयास करें।

extension UIProgressView { 

    @IBInspectable var barHeight : CGFloat { 
     get { 
      return transform.d * 2.0 
     } 
     set { 
      // 2.0 Refers to the default height of 2 
      let heightScale = newValue/2.0 
      let c = center 
      transform = CGAffineTransformMakeScale(1.0, heightScale) 
      center = c 
     } 
    } 
} 
1

मैं

CGAffineTransformMakeScale(1.0, 5.0) 

बार एनीमेशन के साथ Swift - UIProgressView fills diagonally

के साथ एक ही समस्या हो रही है पैमाने प्रगति के बाद सही नीचे करने के लिए छोड़ दिया शीर्ष कोने से भरने हो जाता है।

6

यदि आपने इंटरफ़ेस बिल्डर का उपयोग करके UIProgressView जोड़ा है, तो बस ऊंचाई की बाधा बनाएं और आपको जो चाहिए उसे मूल्य में बदलें। बस।

3

स्विफ्ट 3 में, यह CGAffineTransform (स्केलएक्स: CGFloat, y: CGFloat) में बदल गया है।तो कोड होगा:

masteryProgress.transform = CGAffineTransform(scaleX: 1, y: 4) 
+0

हाय देख सकते हैं तो बहुत आभारी होंगे! ... जब मैं प्रगति के लिए CGAffineTransform का उपयोग करता हूं और लैंडस्केप मोड में आईफोन चालू करता हूं, प्रगतिदृश्य-बार पैमाने को रीसेट करता है .. क्यों ?! – mrk182

2

स्विफ्ट संस्करण 3.0.2 उपयोग में इस:

masteryProgress.transform = masteryProgress.transform.scaledBy(x: 1, y: 5) 
([iOS 7 में प्रगति देखने ऊंचाई] की