Tất cả những gì tôi muốn là một đường viền đen một pixel xung quanh văn bản UILabel màu trắng của tôi.
Tôi đã phân loại được UILabel với đoạn mã bên dưới, mà tôi đã tập hợp một cách vụng về từ một vài ví dụ trực tuyến có liên quan trực tiếp. Và nó hoạt động nhưng rất, rất chậm (ngoại trừ trên trình mô phỏng) và tôi cũng không thể làm cho nó căn giữa văn bản theo chiều dọc (vì vậy tôi tạm thời mã hóa giá trị y trên dòng cuối cùng). 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]);
}
Tôi chỉ có một cảm giác khó chịu rằng tôi đang nhìn ra một cách đơn giản hơn để làm điều này. Có lẽ bằng cách ghi đè "drawTextInRect", nhưng tôi dường như không thể làm cho drawTextInRect làm theo ý mình mặc dù nhìn chăm chú vào nó và cau mày thực sự rất khó.