2013-09-22 9 views
14

की छवि संपत्ति मेरे पास UIImageView ऑब्जेक्ट ऑटो लेआउट के साथ कॉन्फ़िगर किया गया है। मैंने बाधाएं पैदा की हैं ताकि दृश्य अपने पर्यवेक्षण में निरंतर दूरी रख सके। दृश्य प्रारूप में यह जैसा होगा:सामग्री के साथ ऑटो लेआउट बाधाओं को कैसे गठबंधन करें UIView

@"V:|-[imageView]-|" 
@"H:|-[imageView]-|" 

पर मैं भी अंतर्निहित छवि का पक्ष अनुपात रखना चाहेंगे, तो मैं contentMode को UIViewContentModeScaleAspectFit सौंपा है।

मैंने सोचा था कि सब कुछ अच्छी तरह से कार्य कर रहे थे जब तक मैं जुड़े CALayer की cornerRadius मान सेट अब

self.imageView.layer.cornerRadius = 7; 
self.imageView.layer.maskToBounds = YES; 

जब छवि दृश्य आकार दिया जाता है, जैसे कि अभिविन्यास में बदलाव के कारण, गोल आकार के नए आकार के आधार पर गोलाकार कोनों को खो दिया जाता है।

-------------------------- 
|  **********  | 
|  *  *  | 
|  *  *  | 
|  *  *  | 
|  **********  | 
-------------------------- 

वहाँ है: कारण यह है कि cornerRadius (नीचे डैश में फ्रेम) UIImageView पर लागू होता है, लेकिन जब से अंतर्निहित चित्र भी contentMode (नीचे तारक चिन्ह फ्रेम) का सम्मान करने के आकार दिया जाता है, गोल कोनों अब दिखाई नहीं देते हैं है इस व्यवहार को रोकने का एक तरीका?

उत्तर

0

ऐसा करने का एक त्वरित तरीका UIImageView को उपclass करना और layoutSubviews में कोने त्रिज्या सेट करना हो सकता है।

27

जैसे @ जैकोब-के ने कहा, आपको अपने सेल सबक्लास layoutSubviews में जोड़ना चाहिए, लेकिन बस आपको जोड़ने के लिए layoutIfNeeded पर कॉल करना चाहिए।

उदाहरण:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    [self layoutIfNeeded]; 
    imageView.layer.cornerRadius = imageView.frame.size.width/2; 
} 

आप कॉल नहीं करेंगे, तो layoutIfNeeded पहले, तो यह सभी परिवर्तनों को अपने सेट की कमी के बिना लागू होते हैं।

+1

धन्यवाद ... एक आकर्षण की तरह काम करना। इतने लंबे समय तक संघर्ष कर रहे हैं। –

+0

यह UITableViewCell के लिए केवल तभी काम करता है जब आप टेबलव्यू सेल में बाधाएं संलग्न करते हैं और सामग्री को नहीं देखते हैं। (विचारों को अभी भी सामग्री में जोड़ा जा सकता है –

+0

यह समाधान है यदि आपके पास uitableviewcell – khunshan

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