2015-11-20 8 views
10

पर ब्लैक बैकग्राउंड मैं अपने UITabViewController के लिए UITabBar धुंधला पृष्ठभूमि बनाने की कोशिश कर रहा हूं, और विचार यह धुंधला और पारदर्शी होना है ताकि नीचे के विचारों को स्क्रॉलिंग देखा जा सके।पारदर्शी UITabBar

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

यदि मैं UITabBar के अल्फा को कुछ कम करने के लिए बदलता हूं तो मैं देख सकता हूं कि तालिकादृश्य वास्तव में इसके पीछे है, हालांकि आप देख सकते हैं कि UITabBar में कुछ प्रकार की पृष्ठभूमि है जो तालिकादृश्य को पूरी तरह से दिखने से रोक रही है (और मैं बटन आइटम को अदृश्य होने के लिए बार्स नहीं करना चाहता, बस टैब बार पृष्ठभूमि)।

alpha 0.3 tab bar

यह कैसे हो सकता है?

कस्टम टैब बार के विचार में लोड मैं था:

self.tabBar.translucent = true 
self.tabBar.alpha = 0.3 
self.tabBar.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.0) 
self.tabBar.layer.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.0).CGColor 
self.tabBar.backgroundImage = nil 
self.tabBar.shadowImage = nil 

और AppDelegate में मेरे पास है:

UITabBar.appearance().barTintColor = UIColor.clearColor() 
UITabBar.appearance().tintColor = kColorAccent 
UITabBar.appearance().translucent = true 
UITabBar.appearance().translucent = true 
UITabBar.appearance().backgroundColor = UIColor.clearColor() 
UITabBar.appearance().backgroundImage = nil 
UITabBar.appearance().layer.backgroundColor = UIColor.clearColor().CGColor 
UITabBar.appearance().shadowImage = nil 

... हाँ यह अत्यधिक है, लेकिन मैं सब कुछ करने की कोशिश करना चाहते हैं।

क्या करना है इसके बारे में कोई विचार?

+0

की आवश्यकता है आपने यह कोशिश की? http://stackoverflow.com/questions/20979281/ios-7-tabbar-translucent-issue –

+0

@ जॉनीकुमार हाँ मेरे पास है, टैब बार पारदर्शी पर सेट है लेकिन अभी भी कुछ भी नीचे दिखाई नहीं देता है। – Josh

+0

तो क्या आप चाहते हैं कि आपकी टैब बार पूरी तरह से पारदर्शी हो? या एक धुंध के साथ पारदर्शी? – JAL

उत्तर

32

एक UITabBar पारदर्शी

अपने backgroundImage करने के लिए एक साफ छवि निरुपित करते हैं। आप एक 1x1 clear.png उपयोग कर सकते हैं, या प्रोग्राम के रूप में एक बना:

self.backgroundImage = UIImage.imageWithColor(UIColor.clearColor()) 

यह कर देगा UITabBar पारदर्शी:

Transparent

एक कलंक प्रभाव

सम्मिलित एक UIVisualEffectView जोड़े रीर्मोस्ट सबव्यू के रूप में।

Frost

उदाहरण

Frosty toolbar


    :

    let frost = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) 
    frost.frame = self.bounds 
    self.insertSubview(frost, atIndex: 0) 
    

    यह एक UIBlurEffect (ठंढ) से जोड़ दिया जाएगा

  1. FrostyTabBar पर टैब बार नियंत्रक के UITabBar के लिए कस्टम क्लास सेट करें।
  2. आपके पास clearColor छवि प्रदान करने के लिए कुछ विकल्प हैं। आप साफ़ कर सकते हैं।0 के अल्फा के साथ पीएनजी छवि। एक प्रोग्रामेटिक सुरुचिपूर्ण समाधान described here है।
  3. तो एक clear.png का उपयोग कर, में पृष्ठभूमि छवि के लिए असाइन करें गुण निरीक्षक: enter image description here
  4. इंटरफ़ेस निर्माता में, शैली लेने: डिफ़ॉल्ट & पारभासी
  5. एक बार जब आप UIVisualEffectView के साथ पृष्ठभूमि धुंध पर नियंत्रण लेते हैं, तो आप बदले में UIVisualEffect की आपूर्ति कर सकते हैं।

पूरे FrostyTabBar वर्ग इस तरह दिखता है:

import UIKit 

class FrostyTabBar: UITabBar { 
    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     let frost = UIVisualEffectView(effect: UIBlurEffect(style: .light)) 
     frost.frame = bounds 
     frost.autoresizingMask = .flexibleWidth 
     insertSubview(frost, at: 0) 
    } 
} 

GitHub पर इस समाधान और Swift Recipes पर एक 1x1 clear.png सहित अतिरिक्त विवरण का पता लगाएं।

+0

मेरा आदमी! पूरी तरह से काम किया! मुझे लगता है कि मुद्दा यह था कि मैं पृष्ठभूमि छवि को 'शून्य' पर सेट कर रहा था जिसके परिणामस्वरूप "काला" पृष्ठभूमि हुई। पृष्ठभूमि छवि को 1x1 स्पष्ट छवि में सेट करना एक आकर्षण की तरह काम करता है। – Josh

+0

धन्यवाद धन्यवाद, धन्यवाद, धन्यवाद :) – Josh

+0

इस के लिए बड़ा धन्यवाद! – rbiard

0

मैं एक प्रीफेक्ट समाधान नहीं मिला है, आप केवल UITabBar उपवर्ग और फिर उस कष्टप्रद विचारों

class MainTabBar: UITabBar { 
    var cleanDone = false 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     self.deleteUnusedViews() 
    } 

    func deleteUnusedViews() { 
     if !self.cleanDone { 
      var removeCount = 0 
      for (_, eachView) in (self.subviews.enumerate()) { 
       if NSStringFromClass(eachView.classForCoder).rangeOfString("_UITabBarBackgroundView") != nil { 
        eachView.removeFromSuperview() 
        removeCount += 1 
       } 
       if NSStringFromClass(eachView.classForCoder).rangeOfString("UIImageView") != nil { 
        eachView.removeFromSuperview() 
        removeCount += 1 
       } 
       if removeCount == 2 { 
        self.cleanDone = true 
        break 
       } 
      } 
     } 
    } 
} 
0

imageWithColor बदल दिया गया था साफ करने के लिए द्वारा निम्न क्रियाएँ करना jotImage

let size = CGSize(width: tabBar.bounds.size.width, 
        height: tabBar.bounds.size.height) 
tabBar.backgroundImage = UIImage.jotImage(with: UIColor.clear, size: size)