微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用UIFont时处理点或像素

如何解决使用UIFont时处理点或像素

| 我试图在我的drawRect:(CGRect)方法中将字符串放置在CGRect的垂直中心。 CGRect具有以下大小:
CGRect rect = CGRectMake(0.0f,0.0f,rectWidth,rectHeight);
为了绘制字符串以便居中,我首先尝试了此操作:
CGFloat diffheightRectAndFont = rectHeight - font.capHeight;
[str drawAtPoint:CGPointMake(0.0f,diffheightRectAndFont * 0.5f) withFont:font];
我首先假定这会发现我的rect和字体之间的高度差,然后将字体偏移此高度的一半应在\“ sweet spot \”中给出y位置。 但是,capHeight以磅为单位,rectHeight以像素为单位,因此这种解决方案适用于大小为12-15的字体。之后,差异开始将琴弦放置在rect之外。 我经过了几次,唯一一致地正确定位字符串的唯一方法就是这个\'hack \',这是有效的,但是并没有使代码的可读性令人惊奇:
CGFloat diffheightRectAndFont = rectHeight - [[Nsstring stringWithString:@\"F\"] sizeWithFont:font].height;
是否有使用特定字体获取大写字母的像素高度的更直接方法? 先感谢您:)     

解决方法

我知道有点晚了。但是尽管如此,我的回答还是可以帮助别人。 NSString有一个sizeWithFont:方法(在此处记录),我认为可以用于此目的。它返回一个CGSize结构,因此您可以执行以下操作来查找标签内文本的高度。 CGSize textSize = [[标签文本] sizeWithFont:[标签字体]]; CGFloat heightOfStringWithSpecifiedFont = textSize.height; UILabel具有font属性,您可以使用它来动态获取标签的字体详细信息,就像我在上面所做的那样。 希望这可以帮助 :)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。