2015-12-28 9 views
5

के रूप में आता है मैं अपनी छवि बनाने की कोशिश कर रहा हूं एक सर्कल देखें, लेकिन यह हीरे के रूप में बाहर आ रहा है। मैंने सोचा था कि इस कोड काम करेगा, लेकिन यह नहीं बताया गया है:परिपत्र छवि दृश्य हीरा

profilePic.layer.cornerRadius = profilePic.frame.width/2 
    profilePic.clipsToBounds = true 
+1

आपकी छवि दृश्य की ऊंचाई और चौड़ाई समान होनी चाहिए। तो यह सर्कल –

+0

जैसा दिखता है, हालांकि वे वही हैं और मेरे पास स्टोरीबोर्ड में पहलू अनुपात 1: 1 है। – cb428

+0

प्रोफ़ाइल का उपयोग करें Pic.layer.masksToBounds = हाँ; –

उत्तर

1

destinationViewController के लिए नीचे यह कोड जोड़कर में

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    profilePic.layer.cornerRadius = profilePic.frame.width/2 
    profilePic.clipsToBounds = true 
} 
+2

स्टैक ओवरफ़्लो मुझे अभी तक आपका उत्तर स्वीकार करने नहीं दे रहा है लेकिन यह काम करता है - धन्यवाद! – cb428

+1

मैं भी पहले एक ही मुद्दा। मुझे लगता है कि imageview लेआउट viewdidload में autolayout के रूप में उचित सेट नहीं है। और आप स्वीकार नहीं कर सकते क्योंकि कोई इसे नकारात्मक वोटों के साथ चिह्नित करता है। है कि आप भी जिस तरह से निम्नलिखित के साथ viewDidLoad डाल सकते हैं – jay

+1

viewWillLayoutSubviews से अधिक समय से बचने के लिए कॉल करेंगे {जाने delayTime = dispatch_time (DISPATCH_TIME_NOW, Int64 (0.1 * डबल (NSEC_PER_SEC))) dispatch_after (delayTime, dispatch_get_main_queue()) { profilePic.layer .cornerRadius = profilePic.frame.width/2 profilePic.clipsToBounds = true }} – jay

0

मैन्युअल init(coder aDecoder: NSCoder!) को लागू करने के लिए अपने कोड की कोशिश करो।

आप ImageView रूप

init(coder aDecoder: NSCoder!) { 
    super.init(coder: aDecoder) 
    profiePic = [[UIImageView alloc]init]; 
    profilePic setFrame : CGRectMake ("Set Your Control's Frame here"); 
    profilePic.layer.cornerRadius = profilePic.frame.width/2 
    profilePic.clipsToBounds = true 
} 

तहत आप अपनी इच्छा परिणाम मिल जाएगा आरंभ कर देगा।

0

यह काम करता है मुझे

profilePicImageView.layer.cornerRadius = profilePicImageView.frame.size.height/2 
profilePicImageView.layer.masksToBounds = false 
profilePicImageView.clipsToBounds = true 
profilePicImageView.layer.borderWidth = 0 
0

viewDidLayoutSubviews विधि या viewDidAppear विधि में एक ही कोड का उपयोग करें के लिए। वास्तव में, दृश्य जीवन चक्र के अनुसार, विधियों ढंग, init, loadView, viewDidLoad, viewWillAppear, viewWillLayoutSubViews निम्नलिखित में क्रियान्वित कर रहे हैं, तो autolayout बाधाओं लागू किया (autolayout की कमी की संख्या आपके पास, ज्यादा समय इस लेआउट विधि कहा जाता हो कि) तो, viewDidLayoutSubviews और अंतिम viewDidAppear पर।

आपके प्रश्न से, ऐसा लगता है कि आप ऑटोलायआउट बाधाओं को लागू करने से पहले किसी भी विधि में अपना कोड डाल रहे हैं। यही कारण है कि, आपको दृश्य की उचित चौड़ाई नहीं मिल रही है और यह सर्कल के बजाय हीरे में बदल जाती है।

1

आपको हर डिवाइस में सही सर्कल नहीं मिल सकता है, 2.0 को विभिन्न आकार उपकरणों के मूल्यों के करीब अलग-अलग बदलने के लिए प्रयास करें।

-(void)viewDidLoad { 
    self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width/2.0f; 
    self.profilePic.clipsToBounds = YES; 
} 
+0

धन्यवाद सुझाव के लिए धन्यवाद लुकास, मेरा पहला जवाब यहां। तुम्हारी सहायता सराहनीय है। –

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