我正在尝试创建一个简单的自定义 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 个像素。
这是一个已知问题吗?
任何建议如何解决它?
用 CSS 和 HTML 页面创建 UIWebView 似乎有点矫枉过正。以及处理动态字符串的更多工作。那是我应该做的吗?