Tôi tìm thấy câu trả lời này về cách vẽ chữ xoay với NSString drawInRect :, nhưng tôi không chắc làm thế nào nó hoạt động vì nó chỉ loại làm việc cho tôi: https://discussions.apple.com/thread/1779814?start=0&tstart=0Vẽ xoay văn bản với NSString drawInRect
mã trông My như:
CGContextSaveGState(context);
CGContextDrawLinearGradient(context, gradient, CGPointMake(0, centY - halfWidth), CGPointMake(0, centY + halfWidth), 0);
// Add text
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
NSString *str = @"some test string";
CGAffineTransform transform1 = CGAffineTransformMakeRotation(M_PI/4);
CGContextConcatCTM(context, transform1);
CGContextTranslateCTM(context, 0, 0);
UIFont *font = [UIFont systemFontOfSize:16.0];
[str drawInRect:CGRectMake(0, 0, 200, 100) withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UIBaselineAdjustmentNone];
Vì vậy, khi tôi sử dụng điều này, tôi thấy văn bản được vẽ 45 độ bên dưới trục x. Tôi muốn vẽ văn bản theo chiều dọc dọc theo lineargradient của tôi. Vì vậy, tôi nghĩ rằng tôi có thể làm điều đó bằng cách sử dụng M_PI/2 cho 90 độ. Tôi không thấy văn bản của tôi mặc dù. Tôi đã thử các biến đổi khác nhau cho phép quay và chỉ một số có vẻ hoạt động như M_PI/4 và M_PI/8. Tôi sẽ nghĩ rằng nếu tôi sử dụng -M_PI/4 nó sẽ có văn bản 45 độ trên trục x và M_PI/2 sẽ là 90 độ bên dưới trục x. Nhưng cả hai đều không có gì cả.
Mọi suy nghĩ? cảm ơn.
Cảm ơn rất nhiều. nhưng nếu tôi thay đổi -M_PI_2 thành M_PI_2. chuỗi này sẽ biến mất. TẠI SAO? – Jacky
Tôi nhận được nó, nếu thay đổi -M_PI_2 thành M_PI_2, nó cũng cần phải thay đổi CGContextTranslateCTM (ngữ cảnh, -rect.size.height, 0); tới CGContextTranslateCTM (ngữ cảnh, 0, -rect.size.height); – Jacky