Google에서 UITextField로 동일한 작업을 수행하려고 여기에서 착륙했습니다. 아래의 UILabel에서 일반적으로 사용할 수있는 기능을 구현했습니다.
@interface AdjustableUILable : UILabel {
CGFloat characterSpacing;
}
@property CGFloat characterSpacing;
@end
@implementation AdjustableUILable
@synthesize characterSpacing;
- (void)drawTextInRect:(CGRect)rect
{
if (characterSpacing)
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat size = self.font.pointSize;
CGContextSelectFont (context, [self.font.fontName UTF8String], size, kCGEncodingMacRoman);
CGContextSetCharacterSpacing (context, characterSpacing);
CGContextSetTextDrawingMode (context, kCGTextFill);
// Rotate text to not be upside down
CGAffineTransform xform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, xform);
const char *cStr = [self.text UTF8String];
CGContextShowTextAtPoint (context, rect.origin.x, rect.origin.y + size, cStr, strlen(cStr));
}
else
{
// no character spacing provided so do normal drawing
[super drawTextInRect:rect];
}
}
@end
그리고 그것을 사용하는
, 그냥있는 viewDidLoad에서 레이블 또는 뭔가
- (void)viewDidLoad
{
myLabel.characterSpacing = 2; // point size
}
내가 UITextField에 그것을 시도를 설정하지만, 사용자가 필드를 편집 한 후 불행하게도 그것은 단지 문자 간격을 추가합니다. -drawTextInRect는 -textFieldShouldEndEditing 대리자 메서드 후에 만 호출됩니다. 다른 포럼에서는 커서를 표시하기 위해 UITextField가 글꼴 렌더링을 알아야하기 때문에 일부 제안했습니다. 그 조각에 대한 해결책을 찾지 못했습니다 ...
는 (공개 API의 방법 중 어느 것도 실제로 UIFont 노출 없지만) 아이폰에 글꼴을로드 실제로 수많은 방법이 있습니다 : http://stackoverflow.com/questions/360751/can-i-embed-a -custom-font-in-an-iPhone-application – rpetrich
나는 애플이 CSS를 따라하기를 바란다. –