问题标签 [sizewithfont]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1108 浏览

iphone - NSString sizeWithFont:返回不一致的结果?已知的错误?

我正在尝试创建一个简单的自定义 UIView ,其中包含一个用单一字体绘制的字符串,但第一个字符稍大一些。

我认为这很容易通过两个 UILabel:s 并排放置来实现。

我使用 NSString sizeWithFont 来测量我的字符串以便能够正确布局。

但我注意到返回矩形中的字体基线根据我设置的字体大小变化 +/- 1 像素。这是我的代码:

如果我使用 12.0 和 14.0 作为尺寸,它可以正常工作。但是如果我改用 13.0 和 15.0,那么第一个字符就高了 1 个像素。

这是一个已知问题吗?

任何建议如何解决它?

用 CSS 和 HTML 页面创建 UIWebView 似乎有点矫枉过正。以及处理动态字符串的更多工作。那是我应该做的吗?

0 投票
4 回答
2779 浏览

iphone - Iphone sizewithfont 不起作用?

我有以下代码:

谁能告诉我为什么“[currentMessage sizeWithFont:font forWidth:270 lineBreakMode:UILineBreakModeWordWrap].height”总是返回null或nil?

我已经检查并正确填充了 currentMessage 。

有任何想法吗?

0 投票
2 回答
2138 浏览

uilabel - UILabel sizeWithFont:问题。剪切斜体文本

我创建了一个显示单个大字符的 UILabel。即使使用 clipsToBounds = NO; 我仍然得到剪辑。

见链接:http: //img341.imageshack.us/img341/5310/screenshot20100814at243.png

我使用了以下代码:

得到什么应该是字体的边界矩形。并且标签是用以下方式绘制的:

在下图中,从 sizeWithFont 返回的大小由半透明的蓝色矩形覆盖层呈现。如您所见,使用斜体字体(在本例中为 Verdana-BoldItalic),字符会超出 sizeWithFont 返回的范围。此外,UILabel 的框架(橙色)也会裁剪角色。想法?也许我可以覆盖一些文本绘图程序。另外,不确定这是否与此处的问题相同:

UIButton.titleLabel 剪切文本问题

0 投票
3 回答
1961 浏览

objective-c - 多线程崩溃中的 sizeWithFont!

sizeWithFont 在多线程中崩溃,这是调试信息:

现在我通过使用 NSLock 对象来解决错误,在使用这个函数之前我会锁定这个对象,然后解锁它

但我认为必须有更好的解决方案!

我发现这个错误只有在两个线程上这个函数的 NSString 对象都是多行文本时才会出现

0 投票
3 回答
1094 浏览

iphone - iPhone上的UILabel错误的尺寸计算

我现在正在使用模拟器将我的旧应用程序调整为 iPhone 4,我可以通过 UILabel 绘图和 sizeWithFont:constrainedToSize: 遇到一个非常奇怪的行为,我目前只能在 iPhone 4 模拟器上看到。

我试图向用户显示以下错误文本:@“不正确的用户名或密码”此文本位于由三个部分组成的动态错误框内:顶部、中心和底部,因此我计算标签的大小所以我可以相应地更改中心背景图像框架。

下面是一个 UILabel 大小计算代码的例子:

当我在 iPhone 3 模拟器上运行代码时,sizeWithFont:constrainedToSize: 方法返回 1 行的高度并在 1 行上绘制此错误文本。当我在 iPhone 4 模拟器上运行相同的代码时,sizeWithFont:constrainedToSize: 返回两行所需的 (170.0, 42.0) 大小,但标签本身绘制在 1 行上。就好像 sizeWithFont 代码没有使用与渲染代码相同的逻辑。

由于更改错误文本是没有选择的:) 知道如何绕过此问题或解决它吗?

提前致谢

0 投票
3 回答
2749 浏览

iphone - NSString sizeWithFont:constrainedToSize: 在视网膜显示器上返回不正确的高度

我想我找到了 sizeWithFont:constrainedToSize: 的边缘情况:在视网膜显示器上,它有时(它似乎基于自动换行)返回的高度比实际需要的高 1 行,而且比它实际绘制的更重要.

注意:我使用的真实代码隐藏在以性能为中心的手绘可变高度表视图单元代码中,因此我已将问题提炼为尽可能简单的示例代码。(尝试回答我的问题以外的问题时请注意这一点:-)

此示例 UIView 填充其内容,测量文本以适应(包装),填充该矩形,然后绘制文本。

在视网膜设备(或模拟器)上,返回的高度太高了 1 行,但在预视网膜设备(或模拟器)上,它返回正确的高度。

我将非常感谢任何人可能拥有的任何见解,因为这是我想修复的错误!

非常感谢!

-埃里克

整个简单的项目都可以在这里找到

模拟器图像:http :
//files.droplr.com/files/9979822/aLDJ.Screen%20shot%202011-01-11%20at%2012%3A34%3A34.png http://files.droplr.com/files/ 9979822/YpCM.Screen%20shot%202011-01-11%20at%2012%3A36%3A47.png

0 投票
2 回答
6497 浏览

iphone - 如何使用 NSString 的 sizeWithFont 和 drawInRect 来锻炼要绘制多少字符串

我正在使用 iOS 中的 CGContext 绘制多个图像“页面”。我在我的应用程序中广泛使用了 sizeWithFont 和 drawInRect 组合。我需要做的是在多个页面上拆分一大块文本。我可以调整它的大小并确定它是否需要另一页,但我怎么知道在哪里切呢?我是否必须做一个丑陋的循环来逐字检查,直到找到一个完全适合页面的字符串长度,然后在该点切断字符串?有没有更聪明的方法?

有任何想法吗?

谢谢。

0 投票
3 回答
1179 浏览

iphone - CTFrameGetVisibleStringRange 等效于 iOS 编程?

我需要一个像 CTFrameGetVisibleStringRange 这样的方法,它可以为我提供将以换行模式(即自动换行)提供的给定大小呈现的文本。例如,我有很长的一行文本.. 并且我有一个给定的矩形来绘制包含在其中的文本,但是无论文本被截断,我都会继续在它停止的另一个区域呈现它。所以我需要一个像这样的方法:

有人有想法么?

**已编辑:请参阅我的解决方案。

0 投票
4 回答
10103 浏览

ios4 - 调整 CATextLayer 的大小以适应 iOS 上的文本

到目前为止,我所有的研究似乎都表明不可能准确地做到这一点。一开始我仅有的两个选择是:

a) 为 CATextLayer 使用布局管理器 - 自 4.0 起在 iOS 上不可用

b) 使用 sizeWithFont:constrainedToSize:lineBreakMode: 并根据此处返回的大小调整 CATextLayer 的边框。

选项 (b) 是最简单的方法,应该可行。毕竟,它与 UILabel 完美配合。但是当我对 CATextLayer 应用相同的框架计算时,框架总是比预期或需要的大一点。

事实证明,CATextLayers 和 UILabels 中的行间距(对于相同的字体和大小)是不同的。因此,sizeWithFont(其行距计算将与 UILabel 的行距计算匹配)不会返回 CATextLayers 的预期大小。

通过使用 UILabel 打印相同的文本,而不是 CATextLayer 并比较结果,进一步证明了这一点。第一行中的文本完全重叠(它是相同的字体),但 CATextLayer 中的行距仅比 UILabel 中的短一点。(对不起,我现在不能上传截图,因为我已经包含机密数据,而且我目前没有时间制作示例项目来获得干净的截图。我会稍后上传它们以供后人使用,当我有时间)

这是一个奇怪的区别,但我认为可以通过为我在那里使用的 NSAttributedString 指定适当的属性来调整 CATextLayer 中的间距,但情况似乎并非如此。查看 CFStringAttributes.h 我找不到可能与行距相关的单个属性。

底线:

因此,在需要图层适合其文本的情况下,似乎不可能在 iOS 上使用 CATextLayer。我是对的还是我错过了什么?

PS:

  1. 我想使用 CATextLayer 和 NSAttributedString's 的原因是因为要显示的字符串在不同的点上会有不同的颜色。我想我只需要像往常一样重新手动绘制字符串......当然,总是可以选择从 sizeWithFont 获取结果以获得正确的行高。

  2. 稍微滥用“代码”标签以使帖子更具可读性。

  3. 我无法用“CATextLayer”标记帖子——令人惊讶的是,目前不存在这样的标签。如果有足够声誉的人碰到这篇文章,请相应地标记它。

0 投票
2 回答
1078 浏览

iphone - 使用 sizeWithFont:constraintedToSIze:lineBreakMode 计算 NSString 的大小时计算错误

我有一个 UITableViewCell,其子视图由 UITextView 组成。textview 的内容是动态的,所以我想测量确切的宽度和高度来创建一个单元格和一个不需要滚动的 textview。

我创建了以下方法来测量 NSString 将占用的大小:

我以这种方式使用它:

但是无论计算出的高度太小,都会导致 cellView 内部出现令人讨厌的滚动。值得一提的是,几乎所有文本都包含换行符(\n)。

我在这里做错了什么?

谢谢