Я пытаюсь создать простой пользовательский UIView, который содержит строку, нарисованную одним шрифтом, но где первый символ немного больше.NSString sizeWithFont: возвращает непоследовательные результаты? Известная ошибка?
Я думал, что это будет легко реализовано с помощью двух UILabel: s, расположенных рядом друг с другом.
Я использую NSString sizeWithFont для измерения моей строки, чтобы иметь возможность правильно ее выложить.
Но я заметил, что исходный шрифт шрифта в возвращаемом прямоугольнике изменяется с +/- 1 пикселем в зависимости от установленного размера шрифта. Вот мой код:
NSString* ctxt = [text substringToIndex:1];
NSString* ttxt = [text substringFromIndex:1];
CGSize sz = [ctxt sizeWithFont: cfont ];
clbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, sz.width, sz.height)];
clbl.text = ctxt;
clbl.font = cfont;
clbl.backgroundColor = [UIColor clearColor];
[contentView addSubview:clbl];
CGSize sz2 = [ttxt sizeWithFont: tfont];
tlbl = [[UILabel alloc] initWithFrame:CGRectMake(sz.width, (sz.height - sz2.height), sz2.width, sz2.height)];
tlbl.text = ttxt;
tlbl.font = tfont;
tlbl.backgroundColor = [UIColor clearColor];
[contentView addSubview:tlbl];
Если я использую 12.0 и 14.0 в размерах, он отлично работает. Но если я вместо этого использую 13.0 и 15.0, то первый символ будет слишком высоким на 1 пиксель.
Это известная проблема?
Любые предложения по работе с ним?
Создание UIWebView с CSS и HTML-страницей кажется для этого излишним. и больше работы для обработки динамических строк. Это то, что я должен делать?
Я также попытался реализовать его как drawRect: используя [NSString drawInRect:], чтобы убедиться, что проблема не в рамках UILabel. Такая же проблема есть. –