问题标签 [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.
ios - 获取 NSString 高度
我有一个 NSString,我想知道它的高度以创建一个合适的 UILabel。
这样做
高度现在是 13.0。如果我使用这个字符串
高度始终为 13.0(宽度为 353,这是不可能的)......我做错了什么?
添加:
工作正常......所以就像 lineBreakMode 不正确......但它是,不是吗?
iphone - 如何将文本拆分为单独的 UITextView 页面?
一个子问题是:
如何确定 UITextview 的内置内部边距是多少?
我有一个很长的主文本字符串,我试图将其拆分为单独的 UITextView 页面,然后我可以在 UIScrollView 内从一个页面滚动到另一个页面。我使用以下方法来确定 UITextView 中字符串的高度是多少以及字符串是否超过高度限制:
我使用以下 cellFont 作为 mySize 的输入来调用 getHeightByWidth 方法:
UITextView 是 320 像素宽,但我注意到文本不会从左边缘到右边缘,因为内部边距看起来每边大约 10 像素。因此,当我调用 getHeightByWidth 时,我设置了 myWidth = (320 - 10 - 10); 但是在构建适合 UITextView 的字符串之后,最后一行通常会有空白,可以用主字符串中的下一个单词填充。
谁能告诉我为什么使用 UITextView 的这个过程会在文本的最后一行出现这些空白?
objective-c - -[NSString sizeWithFont:] 在发布和调试版本中返回不同的结果
我已经使用此代码成功调整了 aUILabel
的框架高度以适应动态文本多次:
一切都很好,直到我开始使用 iOS5 SDK 构建我的应用程序。
对于 armv6 设备(iPhone3G/-),在构建用于调试时,标签大小可以,但在构建用于发布时,检索到的高度值与宽度相同。我在实际设备上运行这两个版本。
带有以下日志行的示例:
输出:iphone3G - 调试 >
11 月 3 日星期四 18:22:50 未知应用名称 [1071]:labelSize:115.000000 19.000000
iphone3G - 发布 >
11 月 3 日星期四 18:22:50 未知应用名称 [1071]:labelSize:115.000000 115.000000
任何人都可以帮助或为我提供另一种解决方案来UILabel
根据文本长度调整高度吗?
我知道关于这种方法有一些类似的问题,但它们没有解决这个特定问题。
iphone - 将 CGSize 转换为 CGFloat 并使用它来调整 RoundRectButton 的大小
我正在尝试查找一串文本的物理像素大小。然后我想用这个大小来设置一个圆形矩形按钮的长度。我用来获取长度的方法返回一个 CGSize。如何将其转换为 CGFloat?或者,也许有人可以提出一种完全不同的方法来实现这一点。
这是我目前的代码:
正如你在上面看到的,我使用了 CGRectMake 方法,它接受 4 个参数作为 CGFloat。但是,我传入了一个导致运行时错误的 CGSize。
objective-c - sizeWithFont 返回宽度 0
我的最终目标是改变字体大小,以便不同的单词适合同一个矩形区域。我认为 sizeWithFont 会是一个很好的使用方法,但我一直得到 0 的宽度,我很困惑。
我的计划是遍历字体大小,直到宽度适合但 sWidth.width 一直返回 0。
克里斯
ios - iOS:sizeWithFont:用于自定义字体
我一直在插话,我需要使用 sizeWithFont: 方法来正确排列我的布局,但它似乎不适用于自定义字体。有没有办法让它工作,或者我可以使用另一种方法?
我对此感到很困惑。任何帮助表示赞赏。
iphone - UILineBreakMode 与 NSLineBreakMode
我看到一些 UIStringDrawing 方法已更新为使用 NSLineBreakMode 而不是 iOS 6.0 中的 UILineBreakMode:
例如
如何检查这一点以确保我的 iOS 5 及以下用户继续使用 UILineBreakMode?
ios - 无论使用什么字符串,sizewithfont 总是返回相同的值
我想根据它的文本计算一个 tableviewcell 的高度。我正在使用
但不知何故,返回值始终是 22(字体大小)。奇怪的是,当我使用
一切正常。但我更喜欢第一个版本,所以我可以轻松调整宽度。为什么它不起作用?
编辑:抱歉命名约定不好,但 userLabel 是 NSString 而不是标签
iphone - 如何在 iOS UIAlertView 中调整文本标签
我一直在努力为我的 UIAlertView 调整标签,但我没有成功。我想让它根据字符串长度正确调整大小。我读到除了对它进行子类化之外没有什么可以做的,但是当我要这样做时,我发现了一个可以玩它的技巧。(下面的代码)
我可以成功地调整它的大小,为小字符串格式化字体等。我可以很好地适应我的一些字符串(<1000 个字符),但是更大的字符串(>1000 个字符)使它变得丑陋:
- 标签只是拒绝增长以适应额外的内容
- 尽管我减小了文本大小,但它并没有减小(对于不需要的较小字符串,它会减小。并且在需要较小的地方它仍然更大)
- 对于较大的字符串,该标签以白色背景(在设计时在 IB 中看到的)显示,字符串的尾随部分因较大的文本而被隐藏起来。
整个事情看起来完全一团糟。
以下是我如何潜入 UIAlertView 外观代码:
请注意,注释行是我尝试过千次尝试的东西。未注释的也会产生相同的效果。正如我在这里编码的那样,较小的文本会调整。我只需要一个可以让我的标签显示所有文本的解决方案,而不管字符串长度如何 - 我知道它仍然有足够的空间,但它只是不会针对更大的字符串调整大小。
objective-c - CTFramesetterSuggestFrameSizeWithConstraints 返回超出约束的宽度?
在我的应用程序中,我需要根据其文本内容动态更改某些视图的大小。起初我-sizeWithFont
用来做字符串测量。在我的应用程序中有很多测量要做,所以我把它-sizeWithFont
放到了后台,因为苹果的文档说“在 iOS 10.4 及更高版本中,你可以从应用程序的辅助线程中使用此类扩展中描述的方法,而不仅仅是来自主线程。”。然而,事实是这个方法会调用一些不是线程安全的 WebCore 函数,所以应用程序会崩溃。此错误已提交,但仍未修复。(有关此的一些问题,例如MultiThread Crash 中的 sizeWithFont!)
由于性能问题,我无法将测量结果放入主线程,因此我正在尝试 CoreText 框架。我首先为我的字符串创建一个对应项NSAttributedString
,然后使用一些 CT 函数进行测量。我知道在 iOS 6 中,有非常简单的 API,比如-size
可以完成这项工作,但由于兼容性,我无法使用它们。CTFramesetterSuggestFrameSizeWithConstraints()
所以我不得不调用一些像or这样的低级函数CTFramesetterCreateFrame()
,但我发现这些CT 方法有时不尊重我的约束。例如,如果我CGSize(200, CGFLOAT_MAX)
为设置 a CTFramesetterSuggestFrameSizeWithConstraints()
,这应该意味着宽度有一个约束,但实际上它会返回一些具有更大宽度的尺寸,例如 205。同样的事情发生在CTFramesetterCreateFrame()
. 如果我调用它然后调用CTFrameGetLines()
,我有时会得到一个少于应有的行数,因为某些行的宽度超过 200 像素并且包含的单词比应有的多。
很抱歉描述太长,这是我的问题:
- 也许使用 CT 框架来测量一个简单的字符串是一种浪费,那么有没有办法让 -sizeWithFont 可以安全地在后台使用?
- 如果 的行为
CTFramesetterSuggestFrameSizeWithConstraints()
是设计使然,有没有办法让 CT 功能严格遵守我的约束?如果没有,我如何测量具有固定宽度的字符串并且换行模式是自动换行?