2011-05-13 10 views
5

के नीचे धुंधली पृष्ठभूमि मैं चारों ओर देख रहा हूं लेकिन मुझे इस पर कोई जवाब नहीं मिल रहा है। मैं एक ऐसा दृश्य बनाने की कोशिश कर रहा हूं जो सामान्य रूप से इसकी सामग्री प्रदर्शित करेगा, लेकिन इसके नीचे जो कुछ भी है (जेड अक्ष में) धुंधला हो जाएगा।एनएसवी व्यू

मुझे बल्ले से यह सही करने का प्रबंधन नहीं लगता है। जो कुछ भी मैं कोशिश करता हूं (सबसे अच्छा) सामग्री सामग्री को धुंधला करता है, जो नीचे नहीं है।

उत्तर

0

यदि आप ऐसी छवि का उपयोग करते हैं जो दृश्य के फ्रेम से काफी छोटा है और छवि को स्केल करता है, तो यह धुंधला हो जाएगा।

आप कैलियर का उपयोग कर सकते हैं। रूट परत घोषित करें और पृष्ठभूमि छवि को एक उपन्यास के रूप में जोड़ें। एक पारदर्शी पृष्ठभूमि के साथ एक सबव्यू में "सामग्री" रखो। (अन्यथा "सामग्री" शायद धुंधला उप-परत के कारण अस्पष्ट जाएगा।)

यहाँ उप-परत की स्थापना के लिए आंशिक (और untested) कोड है:

// Set up the root layer. 
[[self.aViewController view] setLayer:[CALayer layer]]; 
[[self.aViewController view] setWantsLayer:YES]; 
// Set up a sublayer. 
CALayer *blurredSublayer = [CALayer layer]; 
NSRect rectOfView = [self.aViewController view] frame]; 
blurredSublayer.bounds = rectOfView; 
// Views are usually positioned from their lower left corner, but CALayers are positioned from their center point. 
blurredSublayer.position = CGPointMake(rectOfView.size.width/2, rectOfView.size.height/2); 

// Set the sublayer's contents property to the image you've chosen. You might need to do the scaling when you set up the CGImageRef used by the contents property. (I haven't done this; I leave it to you.) 

// Add the sublayer to the view's root layer. 
[self.aViewController.view.layer addSublayer:blurredSublayer]; 

// You'll probably want to save expense by calling setWantsLayer:NO for the contents-bearing subview, since it will have been turned on when you set up the superview's root layer. 

या यह एक CGContext उपयोग करने के लिए आसान हो सकता है। लेकिन कैलियर के साथ आपके पास उल्लिखित zPosition संपत्ति है।

पीएस "सामग्री" और "पर्यवेक्षक" और "sublayer" का उपयोग संरचना को भ्रमित कर देता है। यहां एक वर्णनात्मक पदानुक्रम है।

  • जड़ परत के साथ superview
  • superview के धुंधला उप-परत (उप-परत की सामग्री को संपत्ति बढ़ाया हुआ है छवि): पहला नाम आइटम नीचे और सबसे अंत में नाम है, ऊपर के रूप में यह आईबी में होगा पर है
  • subview/s (textfields या जो भी आप "सामग्री" के रूप में मन में था)
2

Cocoanetics पर इस लेख चेक बाहर, तो यह आपको कुछ निर्देश कैसे ठीक ब्लर पृष्ठभूमि के साथ एक NSView स्थापित करने के लिए देता है: http://www.cocoanetics.com/2013/10/blurring-views-on-mac/

वहाँ भी Github पर एक RMBlurredView वर्ग है: https://github.com/raffael/RMBlurredView

इसके पीछे विचार एक CIGaussianBlur CIFilter backgroundFilters संपत्ति पर लागू के साथ एक परत समर्थित NSView उपयोग करने के लिए है। सभी महत्वपूर्ण झंडे निर्दिष्ट वर्ग में सही ढंग से सेट हैं।

संबंधित मुद्दे