2013-02-21 49 views
0

我試圖繪製一個字符串drawAtPoint,而不是CGContextShowTextAtPoint用drawAtPoint定位字符串?

- (UIImage *)drawonimage:(UIImage *)img { 
// myString is a string to draw 
// fontName is a string (font name) 
// fontSize is the font size (CGfloat) 

CGFloat w = img.size.width; 
CGFloat h = img.size.height; 

UIGraphicsBeginImageContextWithOptions(img.size,NO,1.0f); 
CGColorSpaceRef colorSpace0 = CGColorSpaceCreateDeviceRGB(); 
CGContextRef context0 = CGBitmapContextCreate(NULL,w,h,8,4 * w,colorSpace0,kCGImageAlphaPremultipliedFirst); 
CGContextDrawImage(context0,CGRectMake(0,0,w,h),img.CGImage); 
CGPoint p0 = CGPointMake(0,0); 
[img drawAtPoint:p0]; 
CGPoint p1 = CGPointMake(0,0); 
UIColor *aColor; 
aColor = [UIColor colorWithRed:100/255.0 green:120.0/255.0 blue:140.0/255.0 alpha:90/100.0]; 
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(),aColor.CGColor); 
[myString drawAtPoint:p1 withFont:[UIFont fontWithName:fontName size:fontSize]]; 
UIImage *Img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return Img; 
} 

我的問題是字符串實際出現的位置。例如,讓我假設我想繪製的字符串是「Hello world!」字符串的最左上角不在0,0處。 (見圖)我想,外觀取決於字體,字體大小和其他因素。所以我想知道是否有測量弦高(不是寬度)的方法? 或者我該怎麼做才能使字符串的左上角(箭頭處)位於0,0?

謝謝你的幫助。

enter image description here

回答

1

看來,是不平凡的... sizeWithFont總是返回最大可能值高度堅韌它返回寬度的正確值...

如這裏指出(How do I calculate the exact height of text using UIKit? ),你需要看看CoreText框架(http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005533)。

+0

謝謝。我還沒有看到'我如何計算...'主題。 – 2013-02-21 15:17:45

+0

不客氣! – apascual 2013-02-21 15:19:43

相關問題