मैं चाहता हूँ कि मेरे सफेद UILabel पाठ के चारों ओर एक पिक्सेल काली सीमा हो।
मुझे नीचे दिए गए कोड के साथ UILabel को उप-वर्ग के रूप में मिला, जिसे मैंने कुछ मूर्त रूप से संबंधित ऑनलाइन उदाहरणों से एक साथ सिलवाया था। और यह काम करता है लेकिन यह बहुत, बहुत धीमा है (सिम्युलेटर को छोड़कर) और मैं इसे टेक्स्ट को लंबवत रूप से केंद्र में लाने के लिए नहीं मिल सका (इसलिए मैंने अस्थायी रूप से अंतिम पंक्ति में y मान को हार्ड-कोडित किया है)। Ahhhh!
void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) {
CGContextSetTextDrawingMode(gc, kCGTextInvisible);
CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str));
CGPoint pt = CGContextGetTextPosition(gc);
CGContextSetTextDrawingMode(gc, kCGTextFillStroke);
CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str));
}
- (void)drawRect:(CGRect)rect{
CGContextRef theContext = UIGraphicsGetCurrentContext();
CGRect viewBounds = self.bounds;
CGContextTranslateCTM(theContext, 0, viewBounds.size.height);
CGContextScaleCTM(theContext, 1, -1);
CGContextSelectFont (theContext, "Helvetica", viewBounds.size.height, kCGEncodingMacRoman);
CGContextSetRGBFillColor (theContext, 1, 1, 1, 1);
CGContextSetRGBStrokeColor (theContext, 0, 0, 0, 1);
CGContextSetLineWidth(theContext, 1.0);
ShowStringCentered(theContext, rect.size.width / 2.0, 12, [[self text] cStringUsingEncoding:NSASCIIStringEncoding]);
}
मुझे बस इतना लग रहा है कि मैं ऐसा करने का एक सरल तरीका देख रहा हूं। शायद "drawTextInRect" को ओवरराइड करने से, लेकिन मैं अपनी इच्छाशक्ति को पूरी तरह से घूरने और वास्तव में बहुत कठिन रूप से डूबने के बावजूद अपनी इच्छा से झुकने के लिए drawTextInRect प्राप्त नहीं कर सकता।