Tutto quello che voglio è un bordo nero di un pixel attorno al mio testo UILabel bianco.
Sono arrivato fino alla sottoclasse di UILabel con il codice seguente, che ho messo insieme goffamente da alcuni esempi online correlati tangenzialmente. E funziona ma è molto, molto lento (tranne che sul simulatore) e non sono riuscito a centrare il testo verticalmente (quindi ho codificato temporaneamente il valore y sull'ultima riga). 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]);
}
Ho solo la fastidiosa sensazione di trascurare un modo più semplice per farlo. Forse sovrascrivendo "drawTextInRect", ma non riesco a convincere drawTextInRect a piegarsi alla mia volontà nonostante lo fissi intensamente e aggrottando le sopracciglia.