Я пытаюсь создать простой пользовательский UIView, который будет содержать строку, нарисованную одним шрифтом, но где первый символ немного больше.
Я думал, что это легко реализовать с помощью двух 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 кажется излишним для этого. и больше работы для обработки динамических строк. Это то, что я должен делать?