ทั้งหมดที่ฉันต้องการคือเส้นขอบสีดำหนึ่งพิกเซลรอบข้อความ UILabel สีขาวของฉัน
ฉันได้รับ UILabel ระดับย่อยด้วยรหัสด้านล่างซึ่งฉันปูด้วยกันอย่างงุ่มง่ามจากตัวอย่างออนไลน์ที่เกี่ยวข้องกันเชิงสัมผัสสองสามตัวอย่าง และมันใช้งานได้ แต่มันช้ามาก (ยกเว้นในโปรแกรมจำลอง) และฉันไม่สามารถทำให้ข้อความอยู่กึ่งกลางในแนวตั้งได้ (ดังนั้นฉันจึงฮาร์ดโค้ดค่า y ในบรรทัดสุดท้ายชั่วคราว) อื้อหือ!
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 โค้งงอตามความประสงค์ของฉันได้เลยทั้งๆที่จ้องมองมันอย่างตั้งใจและขมวดคิ้วอย่างยากลำบาก