Строка с символом «-» неправильно рисуется в методе drawrect в iOS

Я работаю над corteext в iOS.

Я внедрил пользовательский UIView , заменив метод -drawRect на следующий код:

 - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGRect frameRect=CGRectMake(50, 200, 80, 15); // NSString *[email protected]"A-BCDEFGHIJKLM"; // NSString *[email protected]"abc"; // NSString *[email protected]"ABCDEFGHIJKLMNOPQRST"; NSString *[email protected]"A-BCDEFGHIJ"; // NSString *[email protected]"A-BCDEFGHI"; CFStringRef stringRef = (__bridge CFStringRef)textToDraw; NSMutableAttributedString* attString = [[NSMutableAttributedString alloc]initWithString:textToDraw]; NSInteger _stringLength=[textToDraw length]; CTTextAlignment theAlignment = kCTLeftTextAlignment; // kCTRightTextAlignment; //kCTCenterTextAlignment; CTParagraphStyleSetting theSettings[1] = { { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment),&theAlignment } }; CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, 1); [attString addAttribute:(id)kCTParagraphStyleAttributeName value:(__bridge id)paragraphStyle range:NSMakeRange(0, _stringLength)]; CFAttributedStringRef attrString =(__bridge CFAttributedStringRef) attString; CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString); CGMutablePathRef framePath = CGPathCreateMutable(); CGPathAddRect(framePath, NULL, frameRect); // Get the frame that will do the rendering. CFRange currentRange = CFRangeMake(0, 0); CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL); CGPathRelease(framePath); // Get the graphics context. CGContextRef currentContext = UIGraphicsGetCurrentContext(); // Put the text matrix into a known state. This ensures // that no old scaling factors are left in place. CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity); // Core Text draws from the bottom-left corner up, so flip // the current transform prior to drawing. CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2); CGContextScaleCTM(currentContext, 1.0, -1.0); // Draw the frame. CTFrameDraw(frameRef, currentContext); CGContextScaleCTM(currentContext, 1.0, -1.0); CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2); CFRelease(frameRef); CFRelease(stringRef); CFRelease(framesetter); } 

Здесь, когда я помещаю входную строку как « ABCDEFGHIJKLMNOPQRST », она дает мой требуемый результат как « ABCDEFGHIJ », который усекается по ширине « 80 ».

Но проблема в том, что я передаю входную строку как « A-BCDEFGHIJ» , она дает мне вывод как « A- ».

По крайней мере, « A-BCDEFGHI » следует печатать по ширине. Но это только печать « A- ». Это не урезание должным образом.

Я что-то пропустил в своем коде?

Ниже приведены скриншоты:

Вывод для строки «ABCDEFGHIJKLMNOPQRST»: введите описание изображения здесь

Вывод для строки «A-BCDEFGHIJ»: введите описание изображения здесь

Пожалуйста, помогите мне.

Заранее спасибо.

- , или «дефис» – это разрывный символ, который запускает новую строку (похожую на \n ).

Рассмотрим использование Unicode NON-BREAKING HYPHEN (U + 2011)

например

 NSString *textToDraw = @"A\u2011BCDEFGHIJ"; 

Подробнее: Unicode Line Breaking Algorithm

Interesting Posts

Объект C – SecItemAdd имеет ошибку: EXC_BAD_ACCESS (первый раз) и errSecDuplicateItem (второй раз)

Как использовать автоматический макет с контейнерными переходами?

Я не могу захватить снимок экрана WKWebView

obj-c AFNetworking 2.0 Запрос POST не работает

ионное приложение отлично работает на эмуляторе iOS 10.1, но ошибки при развертывании на устройство

Маска CGImage не работает на дисплеях Wide Color Gamut

Дополнительная кнопка в UILabel, как в AppStore, любое описание приложения

Как сохранить контактную информацию из vCard в приложение «Контакты для iPhone»

iOS: добавление неотредактируемой строки в конец UITextView

Как передавать аудио AVAsset по беспроводной сети с одного устройства iOS другому?

Ошибка при запуске приложения при обновлении без обновления

mkmapview MKUserLocation AnnotationView

Как использовать AWS iOS SDK для удаления объекта?

iOS Найти удаленный элемент в большом массиве (например:> 1 миллион элементов)

Символ «звезда» слишком мал в виде набора номера

Давайте будем гением компьютера.