- html - 我的下拉菜单的内容关闭得太快
- c# - 使用 Html Agility Pack 从网页中的表中获取值而不使用 "SelectNode'
- html - 内容容器下的 CSS 下拉菜单
- html - 如何停止嵌套列表重叠父列表?
因此,在使用 NSString
的 -sizeWithFont
系列方法调用时,我似乎遇到了一些奇怪的行为,具体取决于我是否在 iPhone 模拟器上调用它或实际设备。
很简单,当 -sizeWithFont:constrainedToSize:lineBreakMode:
方法调用的接收者为 nil
时,生成的 CGSize
会传回模拟器是 {0, 0}
。 但是,在设备上,返回结果与我在方法调用中指定为 constrainedToSize:
参数的 CGSize
值相同。请参阅以下日志语句:
模拟器:
someString: (null)
someStringSize: {0, 0}
设备:
someString: (null)
someStringSize: {185, 3.40282e+38}
模拟器上的行为正是我所期望的。并不是说这个问题很难规避,而是 1) 我有点困惑为什么这一系列函数在模拟器和实际设备上的行为不同,2) 为什么在 nil 上调用方法code> 接收者返回一个特定的、确定性的结果?
感谢你们提供的任何指示或见解!
编辑:我想我应该提到我正在针对 3.1 SDK 进行构建。
最佳答案
Apple 关于 Sending messages to nil 的文档有点解释了这一点:
The value returned from a message to nil may also be valid:
- If the method returns an object, then a message sent to nil returns 0 (nil) ...
- If the method returns any pointer type, any integer scalar of size less than or equal to sizeof(void*), a float, a double, a long double, or a long long, then a message sent to nil returns 0.
- If the method returns a struct, as defined by the Mac OS X ABI Function Call Guide to be returned in registers, then a message sent to nil returns 0.0 for every field in the data structure. Other struct data types will not be filled with zeros.
- If the method returns anything other than the aforementioned value types the return value of a message sent to nil is undefined.
尽管本文档没有具体讨论 iPhone(并且是在 iPhone SDK 发布之前编写的),但请注意第三点和第四点:如果该方法返回一个结构体(例如 CGSize
),该行为依赖于平台。只有 CPU 寄存器中返回的值才会用零填充。我不是 iPhone ARM 架构方面的专家,但很可能在 iPhone 上,sizeWithFont:
的返回值不是在寄存器中返回的,这与 i386 不同。在这种情况下,在模拟器上运行时,返回的结构体将被填充零,而在 iPhone 上运行时,该值将是未定义的。
关于iphone - -sizeWithFont 在设备上的功能不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632478/
因此,在使用 NSString 的 -sizeWithFont 系列方法调用时,我似乎遇到了一些奇怪的行为,具体取决于我是否在 iPhone 模拟器上调用它或实际设备。 很简单,当 -sizeWith
我有以下代码: - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexP
我有一些 uilabels,其中有一些令人烦恼的复杂定位代码。 如果我使用 sizeWithFont 根据文本调整它们的大小,在查找该大小时是否会考虑 autoshrink 属性? 最佳答案 查看:
伙计们。我有带有不同单元格的 UITableView,我有计算高度的代码。在一个项目中它运行完美,但在第二个项目中它返回高度等于 0。是什么原因造成的?我的代码: - (CGFloat)tableVi
我正在尝试根据内容的内容计算表格 View 中单元格的必要高度。这是在 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtInde
我正在尝试测量 NSString 的视觉大小,它考虑了我可以呈现的行数。但是, sizeWithFont 没有考虑 numberOfLines 属性?所以我的布局算法将所有内容定位在低于实际需要的位置
我有一个类,其工作是将文本解析为多个页面。我使用 sizeWithFont: 方法来识别一页何时结束而另一页何时开始。但不幸的是,由于需要解析的文本量相当大,整个操作需要在后台线程上执行(需要几秒钟才
每当文本中出现 & 时,获取高度似乎总是会失败。两个函数返回的值都小于实际高度: CGSize labelSize = [nameLabel.text sizeWithFont:nameLabel.f
我有一个 UITableView ,其中每个单元格都使用 Core Text 来绘制一些文本。在计算返回 heightForRow 的高度时,我使用 NSString sizeWithFont 来确定
我正在尝试确定 UILabel 中字符的精确位置,例如: (UILabel *)label.text = @"你好!"; 我想确定'o'的位置。我认为我可以使用 sizeWithFont 将所有前面的
我一直在插电,我需要使用sizeWithFont:方法正确排列我的布局,但是它似乎不适用于自定义字体。有没有办法让它工作,或者我可以使用另一种方法? 我对此很困惑。任何帮助表示赞赏。 最佳答案 siz
我只想使用 iPhone 系统字体,但我不知道该怎么调用它。 sizeWithFont:@"HelveticaNeue"给我一个错误的参数错误。 sizeWithFont:系统给我一个未初始化的变量错
我正在尝试使用 sizeWithFont 动态确定每行应在 TableView 中的大小,但由于某种原因它始终为 0.0。这是我的代码: - (CGFloat)labelHeight:(NSS
如果我试图找出字符串的宽度(以像素为单位) CGSize sz = [@"Test text to hilight without new line for testing" sizeWithFont
为什么整个单词的 sizeWithFont 会产生与其字母大小之和不同的结果? 以下是带和不带字距调整的文本示例: CGFloat fontSize = 36; UIFont *font = [UIF
我在我的应用中使用了 Georgia 和 Georgia-Bold 字体。因为它必须显示我从服务器下载的大量文本数据,所以我在应用程序的各个地方广泛使用 NSString 的方法 sizeWithFo
我想根据文本计算tableviewcell 的高度。我正在使用 CGSize userInputSize = [userLabel sizeWithFont:[UIFont fontWithName:
sizeWithFont 在多线程中崩溃,这是调试信息: 1 0x00a0df8e in icu::RuleBasedBreakIterator::handleNext 2 0x00a0daff in
如果我强制其框架高度足够高,我有一个 UILabel 可以正确地自动换行。但是,我希望它动态地找到合适的高度,而 sizeWithFont 方法并没有这样做;该方法只是在我的标签中创建了一行: CGS
方法(sizeWithFont: forWidth: lineBreakMode:)在 iOS 7.0 中被弃用。 但是我怎样才能做同样的事情,就像在 iOS 7.0 中下面的代码一样? CGSize
我是一名优秀的程序员,十分优秀!