2016-03-23 8 views
10

मैं अपने ImageViewआईओएस: (ऊपर, ठीक है, नीचे और बाएं)

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:self.avatarImageView.bounds]; 
self.avatarImageView.layer.masksToBounds = NO; 
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; 
self.avatarImageView.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.avatarImageView.layer.shadowOpacity = 0.8f; 
self.avatarImageView.layer.shadowPath = shadowPath.CGPath; 

के लिए छाया बनाने के लिए नीचे दिए गए कोड का उपयोग कर रहा 4 तरफ UIView के लिए एक छाया बनाने के लिए यह एक छाया छोड़ देंगे इस छवि की तरह दाएं और नीचे।

enter image description here

अब मैं अपने ImageView भी शीर्ष और बाएं में एक छाया है बनाना चाहते हैं। मुझे कोड में क्या बदलना चाहिए? दृश्य को केवल कोड में कॉन्फ़िगर द्वारा बाएं, दाएं, नीचे, बाईं ओर छाया बनाने के लिए संभव है या मुझे छाया के लिए अन्य लेआउट दृश्य बनाने की आवश्यकता है? किसी भी मदद की सराहना की जाएगी।

यहाँ मैं क्या हासिल करना
enter image description here

अद्यतन
एक सरल उपाय दे के लिए @Dipen Panchasara धन्यवाद करना चाहते हैं। का पालन @Dipen Panchasara (छाया रंग के साथ काले रंग है) मैं इस
enter image description here

उत्तर

20

इस तरह की तरह छाया छवि होगा:

float shadowSize = 10.0f; 
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(self.avatarImageView.frame.origin.x - shadowSize/2, 
                     self.avatarImageView.frame.origin.y - shadowSize/2, 
                     self.avatarImageView.frame.size.width + shadowSize, 
                     self.avatarImageView.frame.size.height + shadowSize)]; 
self.avatarImageView.layer.masksToBounds = NO; 
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; 
self.avatarImageView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); 
self.avatarImageView.layer.shadowOpacity = 0.8f; 
self.avatarImageView.layer.shadowPath = shadowPath.CGPath; 

स्विफ्ट 3 संस्करण:

let shadowSize : CGFloat = 5.0 
    let shadowPath = UIBezierPath(rect: CGRect(x: -shadowSize/2, 
               y: -shadowSize/2, 
               width: self.avatarImageView.frame.size.width + shadowSize, 
               height: self.avatarImageView.frame.size.height + shadowSize)) 
    self.avatarImageView.layer.masksToBounds = false 
    self.avatarImageView.layer.shadowColor = UIColor.black.cgColor 
    self.avatarImageView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0) 
    self.avatarImageView.layer.shadowOpacity = 0.5 
    self.avatarImageView.layer.shadowPath = shadowPath.cgPath 
+0

यह 4 पक्ष के लिए छाया देगा (शीर्ष: 5, बाएं: 5, नीचे: 10, दाएं: 10)। सही काम करते हैं, धन्यवाद –

19

केवल निम्नलिखित कोड आपकी आवश्यकता के लिए नौकरी करेगा, आपको छाया पथ के लिए UIBezierPath बनाने की आवश्यकता नहीं है।

// *** Set masks bounds to NO to display shadow visible *** 
self.avatarImageView.layer.masksToBounds = NO; 
// *** Set light gray color as shown in sample *** 
self.avatarImageView.layer.shadowColor = [UIColor lightGrayColor].CGColor; 
// *** *** Use following to add Shadow top, left *** 
self.avatarImageView.layer.shadowOffset = CGSizeMake(-5.0f, -5.0f); 

// *** Use following to add Shadow bottom, right *** 
//self.avatarImageView.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 

// *** Use following to add Shadow top, left, bottom, right *** 
// avatarImageView.layer.shadowOffset = CGSizeZero; 
// avatarImageView.layer.shadowRadius = 5.0f; 

// *** Set shadowOpacity to full (1) *** 
self.avatarImageView.layer.shadowOpacity = 1.0f; 
+0

दिए गए कोड में क्या समस्या है? यह पूरी तरह से काम करता है। –

+0

आपके उत्तर के लिए धन्यवाद लेकिन अपने कोड का पालन करें मेरे पास शीर्ष-बाईं ओर छाया होगी। लेकिन मैं क्या चाहता हूं कि मैं शीर्ष-दाएं-नीचे-बाईं ओर एक छाया रखना चाहता हूं। शायद मैं बहुत अच्छी तरह से समझा नहीं। आपके समय के लिए बहुत धन्यवाद। मैं इसे कम नहीं करता हूं :( –

+0

मैंने सभी 3 संभावनाओं के लिए कोड जोड़ा है। –

0

तेज 3 के लिए थोड़ा कम कोड:

view.layer.shadowColor = UIColor.black.cgColor 
    view.layer.shadowOpacity = 0.7 
    view.layer.shadowOffset = CGSize.zero 
    view.layer.shadowRadius = 4 
    view.layer.shadowPath = UIBezierPath(rect: planView.bounds).cgPath 
0

UIView के लिए और जोड़ने से छाया, पृष्ठभूमि रंग सेट करने के लिए याद UIView के लिए।

यदि पृष्ठभूमि रंग स्पष्ट है रंग, कोई छाया प्रकट नहीं होती है।

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