2
我有這樣的代碼,創建一個CATextLayer並繪製它放到一個UIView:字符在一個包裹CATextLayer被部分地切斷
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
CGRect viewRect = CGRectMake(50.0f, 50.0f, 345.0f, 120.0f);
CATextLayer *textLayer = [CATextLayer layer];
textLayer.contentsScale = [[UIScreen mainScreen] scale];
textLayer.wrapped = YES;
textLayer.truncationMode = kCATruncationNone;
UIFont *font = [UIFont fontWithName:@"SnellRoundhand" size:20.0f];
textLayer.string = @"Lorem Lipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";
textLayer.alignmentMode = kCAAlignmentLeft;
textLayer.fontSize = font.pointSize;
CTFontRef fontRef = CTFontCreateWithName((__bridge CFStringRef)font.fontName, font.pointSize, nil);
textLayer.font = fontRef;
CFRelease(fontRef);
textLayer.backgroundColor = [[UIColor lightGrayColor] CGColor];
textLayer.foregroundColor = [[UIColor blackColor] CGColor];
textLayer.frame = viewRect;
UIGraphicsBeginImageContextWithOptions(textLayer.frame.size, NO, 0);
[textLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *textImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *textImageView = [[UIImageView alloc] initWithImage:textImage];
textImageView.frame = viewRect;
[self.view addSubview:textImageView];
}
不幸的是,某些字符的呈現視圖時被切斷。在我發佈的例子中,開頭的'L'缺少最左邊的像素,第二個末尾的'd'缺少最右邊的像素。
有沒有辦法來防止這種情況發生,而不改變文本的包裝方式?