2013-12-10 2 views
0

Как повернуть NSString в определенной степени? когда я рисую строку вместе с изображением.Как повернуть NSString drawinrect в CGContext

Я назвал этот вопрос Drawing rotated text with NSString drawInRect, но мой Эллипс исчез.

//Add text to UIImage 
-(UIImage *)addMoodFound:(int)moodFoundCount andMoodColor:(CGColorRef)mColour 
{ 
    float scaleFactor = [[UIScreen mainScreen] scale]; 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(36, 36), NO,scaleFactor); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(context); 

    //CGContextSetRGBFillColor(context, kCGAggressiveColor); 
    CGContextSetFillColorWithColor(context,mColour); 
    CGContextFillEllipseInRect(context, CGRectMake(0, 0, 36, 36)); 
    CGContextSetRGBFillColor(context, 250, 250, 250, 1); 

//nsstring missing after adding this 3 line 
CGAffineTransform transform1 = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(65)); 
    CGContextConcatCTM(context, transform1); 
    CGContextTranslateCTM(context, 36, 0); 

/////////////////////////////////////////// /////

[[NSString stringWithFormat:@"%d",moodFoundCount ] drawInRect : CGRectMake(0, 7, 36, 18) 
      withFont : [UIFont fontWithName:monR size:17] 
     lineBreakMode : NSLineBreakByTruncatingTail 
      alignment : NSTextAlignmentCenter ]; 

    CGContextRestoreGState(context); 

    UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return theImage; 
} 
+1

Пожалуйста, не префиксом пользовательские переменные с 'kCG'. Они не являются частью Core Graphics. –

+0

Я ничего не вижу в этом коде, который преобразует контекст (т. Е. Вращает его). Вы уверены, что часть работает? –

+0

@ DavidRönnqvist Я добавляю строку, которую я использовал для поворота строки. мой текст исчезнет, ​​как только я добавлю 3 строки – Desmond

ответ

5

CGAffineTransformMakeRotation будет вращаться вокруг начала координат контекста (в данном случае х = 0, у = 0).

Чтобы правильно повернуть текст, необходимо сначала перевести начало контекста с центром поля, содержащего строку, повернуть и перенести начало координат в исходное местоположение.

Заменить 3 строки, где вы подаете вращение с:

CGContextConcatCTM(context, CGAffineTransformMakeTranslation(18, 18)); 
CGContextConcatCTM(context, CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(65))); 
CGContextConcatCTM(context, CGAffineTransformMakeTranslation(-18, -18)); 
+0

спасибо за ответ. 3 линии работают как очарование! – Desmond

Смежные вопросы