ios - UIView पर अल्फा सेट करना अल्फा को इसके सबव्यूव्स पर सेट करता है जो नहीं होना चाहिए




objective-c alpha-transparency (6)

UIVIew @property(nonatomic) CGFloat alpha लिए प्रलेखन के अनुसार

इस संपत्ति का मूल्य 0.0 से 1.0 तक एक फ़्लोटिंग-पॉइंट नंबर है, जहां 0.0 पूरी तरह से पारदर्शी प्रतिनिधित्व करता है और 1.0 पूरी तरह से अपारदर्शी प्रतिनिधित्व करता है। यह मान केवल वर्तमान दृश्य को प्रभावित करता है और इसके किसी भी एम्बेडेड सबव्यू को प्रभावित नहीं करता है।

मेरे पास एक कंटेनर दृश्य निम्नानुसार कॉन्फ़िगर किया गया है:

self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];

और उसके बाद 'myView' में सबव्यू जोड़ें

[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected

लेकिन ' anotherView ' में स्क्रीन पर अल्फा है (यह उम्मीद के रूप में अपारदर्शी नहीं है)

यह कैसे हो सकता है और क्या किया जा सकता है?


अभी के लिए माता-पिता दृश्य पारदर्शी बनाने के लिए केवल एक ही तरीका है और माता-पिता के दृश्य के बाहर किसी भी बच्चे के विचारों को न रखें (उपदृश्य के रूप में कोई भी विचार न रखें), उस बच्चे के विचारों को मूल दृश्य के बाहर रखें। पैरेंट व्यू पारदर्शी बनाने के लिए आप स्टोरीबोर्ड के माध्यम से ऐसा कर सकते हैं।

//Transparent the parentView

parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)

अन्य दृश्य को मूल दृश्य के बाहर रखें। यह एक आकर्षण की तरह काम करेगा।


अल्फा के बजाए पृष्ठभूमि रंग की अस्पष्टता सेट करें इसके बच्चे के विचारों को प्रभावित नहीं करेगा।

  1. दृश्य का चयन करें।
  2. पृष्ठभूमि रंग की तुलना में इंस्पेक्टर इंटरेक्टर पर जाएं
  3. "अन्य" पर क्लिक करें
  4. अस्पष्टता सेट 30%

या आप प्रोग्रामेटिक रूप से सेट कर सकते हैं

var customView:UIView = UIView()
customView.layer.opacity = 0.3

बस। हैप्पी कोडिंग !!!


चर्चा के रूप में सरल समाधान निम्नानुसार अल्फा को बदलना है: एक्सकोड 8 स्विफ्ट 3 के लिए अद्यतन संस्करण है:

yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)

उद्देश्य सी:

yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];

यहां ऐप्पल डेवलपर डॉक्स का संदर्भ लें: https://developer.apple.com/reference/uikit/uiview/1622417-alpha


मुझे लगता है कि यह दस्तावेज में एक बग है। आपको इसे bugreport.apple.com पर दर्ज करना चाहिए।

कुछ त्वरित शोध के बाद मैं जो कुछ भी देख सकता हूं, वह बताता है कि आप जो देख रहे हैं वह यह है कि यह हमेशा कैसे व्यवहार करता है, और मेरा स्वयं का परीक्षण भी दिखाता है।

दृश्य के अल्फा सभी सबव्यू पर लागू होता है।

शायद आपको केवल [[UIColor blackColor] colorWithAlphaComponent:0.5] लेकिन यदि नहीं, तो आपको बच्चे के बजाय दृश्य को एक भाई बनाने की आवश्यकता होगी।


यहां थोड़ा जटिल समाधान है:

UIView *container;
UIView *myView;
UIView *anotherView;

myView.alpha = 0.5;
[container addSubview:myView];

anotherView.alpha = 1;
[container addSubview:anotherView];

anotherView रूप में एक container व्यू का उपयोग करें, एक और anotherView और myView container में दोनों myView हैं, anotherView में एक anotherView नहीं है।


तेजी से

view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)

स्विफ्ट 3 के लिए अद्यतन

view.backgroundColor = UIColor.white.withAlphaComponent(0.5)




alpha-transparency