मुझे पसंद नहीं है कि तीन20 में चीजों को कस्टमाइज़ करने, विश्लेषक चेतावनियों को ठीक करने और इसे एक्सकोड 4 में बनाने के लिए बुरे अनुभव होने का बुरा अनुभव नहीं है। इसे कभी भी एक नई परियोजना में उपयोग नहीं किया जाएगा। लेकिन शायद यह इस मामले में आप जो चाहते हैं वह करेंगे।
हालांकि आप अपने स्वयं के बुलबुले को काफी आसानी से बना सकते हैं। काश मैं ब्लॉग के लेखक को श्रेय दे सकता हूं कि मुझे यह मिला, लेकिन यह दो साल पहले था और अब मैं इसे Google के साथ नहीं ढूंढ सकता। असल में आप एक रंग चुन रहे हैं, राउंड एंडकैप्स ड्राइंग कर रहे हैं, उनके बीच एक आयत डालें और फिर शीर्ष पर आवश्यक टेक्स्ट डालें।
UIGraphicsBeginImageContext(CGSizeMake(SIDELENGTH, SIDELENGTH));
CGContextRef context = UIGraphicsGetCurrentContext();
// the image should have a white background
[[UIColor clearColor] set];
CGRect myRect = CGRectMake(0.0f, 0.0f, SIDELENGTH, SIDELENGTH);
UIRectFill(myRect);
[self.color set];
// Drawing code
CGSize textSize = [self.text sizeWithFont:[UIFont boldSystemFontOfSize:[UIFont systemFontSize]]];
double capDiameter = textSize.height;
double capRadius = capDiameter/2.0;
double capPadding = capDiameter/4.0;
double textWidth = MAX(capDiameter, textSize.width) ;
CGRect textBounds = CGRectMake(capPadding, 0.0, textWidth, textSize.height);
CGRect badgeBounds = CGRectMake(0.0, 0.0, textWidth + (2.0 * capPadding), textSize.height);
double offsetX = (CGRectGetMaxX(myRect) - CGRectGetMaxX(badgeBounds))/2.0;
double offsetY = (CGRectGetMaxY(myRect) - CGRectGetMaxY(badgeBounds))/2.0;
badgeBounds = CGRectOffset(badgeBounds, offsetX, offsetY);
textBounds = CGRectOffset(textBounds, offsetX, offsetY);
CGContextFillEllipseInRect(context,
CGRectMake(badgeBounds.origin.x, badgeBounds.origin.y, capDiameter, capDiameter));
CGContextFillEllipseInRect(context,
CGRectMake(badgeBounds.origin.x + badgeBounds.size.width - capDiameter, badgeBounds.origin.y,
capDiameter, capDiameter));
CGContextFillRect(context, CGRectMake(badgeBounds.origin.x + capRadius, badgeBounds.origin.y,
badgeBounds.size.width - capDiameter, capDiameter));
if(self.textColor != nil) {
const CGFloat* colors = CGColorGetComponents(self.textColor.CGColor);
CGColorSpaceRef space = CGColorGetColorSpace(self.textColor.CGColor);
CGColorSpaceModel model = CGColorSpaceGetModel(space);
if(model == kCGColorSpaceModelMonochrome)
// monochrome color space has one grayscale value and one alpha
CGContextSetRGBFillColor(context, *(colors + 0), *(colors + 0), *(colors + 0), *(colors + 1));
else
// else a R,G,B,A scheme is assumed.
CGContextSetRGBFillColor(context, *(colors + 0), *(colors + 1), *(colors + 2), *(colors + 3));
} else
// else use plain white
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f);
[self.text drawInRect:textBounds
withFont:[UIFont boldSystemFontOfSize:[UIFont systemFontSize]]
lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
हटाएँ बटन व्यवहार आपके द्वारा बताई भी बहुत सरल है - एक बार आप एक मैच चुना गया है और स्वीकार किए जाते हैं सम्मिलन बिंदु पर बुलबुला आकर्षित और UITextField के फ्रेम बदल बुलबुला के बाद शुरू किया है।यदि आप UITextField फ्रेम की शुरुआत में हैं और आपको एक और डिलीट मिलता है, तो बबल UIImageView को हटाएं, UITextField फ्रेम को रीसेट करें जहां UIImageView शुरू होता था।
या आप UIWebView को एड्रेस एंट्री फ़ील्ड के रूप में उपयोग कर सकते हैं जिसमें आप पाठ के साथ दिखाए गए कोड के साथ बनाई गई बबल छवियां प्रदर्शित करते हैं (this StackOverflow question देखें) जैसा कि आप इसे संपादित करते हैं। आपको निर्दिष्ट विधि को हटाने में संभालने के लिए प्रतिनिधि विधि के लिए एक हैंडलर लिखना होगा, और जोड़ा गया पता, और बबल छवि, यदि कोई बबल आइटम है जिसे डिलीट एक्शन लक्ष्यीकरण कर रहा है।
इस पुराने प्रश्न को जीवन में लाने के लिए खेद है। लेकिन क्या आप कोड को दिखा सकते हैं कि आपने इसे कैसे कार्यान्वित किया। क्या आपके पास नीली गोली के लिए छवि फाइलें भी हैं? –