मुझे अवतार फ़ोटो के लिए गोलाकार बटन बनाने की आवश्यकता थी और मदद के लिए इस प्रश्न का उत्तर मिला लेकिन वे मुझे वहां से सभी तरह से नहीं मिला। मैंने backgroundRectForBounds
विधि लागू की और छवि को फिट करने के लिए स्केल किया और यह अच्छी तरह से काम करता है।
मेरे पास गिटहब पर कोड है।
https://github.com/brennanMKE/CircleButton
विधि भी नीचे सूचीबद्ध है। पृष्ठभूमि छवि को सेट करना महत्वपूर्ण है, न कि बटन के लिए छवि जो इस विधि के साथ काम नहीं करता है।
- (CGRect)backgroundRectForBounds:(CGRect)bounds {
UIImage *backgroundImage = [self backgroundImageForState:self.state];
if (backgroundImage) {
CGFloat maxWidth = CGRectGetWidth(self.frame);
CGFloat xDelta = maxWidth/backgroundImage.size.width;
CGFloat yDelta = maxWidth/backgroundImage.size.height;
CGFloat delta = xDelta > yDelta ? xDelta : yDelta;
CGFloat x = floorf((self.bounds.size.width - (backgroundImage.size.width * delta))/2);
CGFloat y = floorf((self.bounds.size.height - (backgroundImage.size.height * delta))/2);
return CGRectMake(x, y, backgroundImage.size.width * delta, backgroundImage.size.height * delta);
}
else {
return [super backgroundRectForBounds:bounds];
}
}
क्षमा करें, के हर छवियों के लिए एक ही है कि ऊपर खींचें करने के लिए समय की गहराई से है, लेकिन वहाँ में एक स्मृति रिसाव है, अगर मैं गलत नहीं हूँ। आवंटन के लिए कोई रिलीज नहीं। –
@ जोसेफ, यह इंगित करने के लिए धन्यवाद। मैंने कोड अपडेट किया। –