Я должен нарисовать подчеркнутый многострочный текст со всеми типами выравнивания текста. Я искал на форумах и получил некоторые результаты как:
http://davidjhinson.wordpress.com/2009/11/26/underline-text-on-the-iphone/
http://forums.macrumors.com/showthread.php?t=561572
Но все рисуют текст для одной строки только. в то время как у меня есть многострочный текст. Ситуация даже становится хуже, когда выравнивание текста центрируется. Я искал и нашел, что в iphone-sdk-3.2 существуют некоторые атрибуты базового текста для подчеркивания текста, но никакая идея, как использовать это. Кроме того того, если бы я использую их, моя проблема не была бы решена полностью.
Поскольку я должен нарисовать перечеркнутый текст также.
Кто-либо имеющий идею об этом помогите.
Что насчет этого. Что вы думаете, это хорошо работает для меня, если для этого нужна некоторая оптимизация?
CGContextSetFillColorWithColor(c, [[UIColor blackColor] CGColor]); //THE TEXT COLOR OF THE STRING TO BE DRAWN.
UIFont *fontName = [UIFont fontWithStyle:@"Arial-BoldMT" andFontSize:13];
if(FontOverLayUnderLine || FontOverLayStrikeThrough){
NSArray *stringsArray = [textString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
CGContextSetStrokeColorWithColor(c, [appDel.textDisplayStyle.fillColor CGColor]);
CGContextSetLineWidth(c, 1.0);
CGSize stringSize;
NSString *stringToDraw;
for (int i = 0 ; i < [stringsArray count]; i++) {
stringToDraw = [stringsArray objectAtIndex:i];
if(![[stringToDraw stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]){
stringSize = [stringToDraw sizeWithFont:fontName forWidth:rect.size.width lineBreakMode:UILineBreakModeCharacterWrap];
float x = rect.origin.x + (rect.size.width-stringSize.width)/2 + 7;
float y = 4 + stringSize.height*i;
[stringToDraw drawAtPoint:CGPointMake(x, y) forWidth:stringSize.width withFont:fontName lineBreakMode:UILineBreakModeCharacterWrap];
if(FontOverLayUnderLine)
y += (1.05) * stringSize.height*i +1;
else
y += (stringSize.height/2)+1;
CGContextMoveToPoint(c, x, y);
CGContextAddLineToPoint(c, x+stringSize.width, y);
CGContextStrokePath(c);
}
}
}
Надеюсь, это сработает для всех.
Спасибо,
Madhup
Использовать основной текст.
Я поискал и обнаружил, что в iphone-sdk-3.2 есть некоторые атрибуты core-text для подчеркивания текста, но я не знаю, как это использовать.
Для этого предназначена документация .