iphone - 当 NSString 包含表情符号时如何获取 NSString 大小?

标签 iphone ios objective-c nsstring emoji

我正在使用

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode

获取 NSString 的大小。但是,当该字符串包含表情符号时,它似乎计算文字 unicode 字符的大小而不是考虑表情符号本身的大小,从而导致返回的大小不正确。

如何正确获取带有表情符号字符的字符串的大小,因为它会出现在 uilabel 中?

最佳答案

NSString 没有呈现表情符号,它代表一个字符串,所以 sizeWithFont 将只考虑字符串。

我会使用:

CGRect labelFrame = label.frame;  
labelFrame.size = [label sizeThatFits:CGSizeMake(100, 9999)];  
[label setFrame:labelFrame]; 

//Alternatively  
[label sizeToFit];

请记住,sizeToFit 调用了 sizeThatFits: 方法,因此就将标签设置为正确的高度而言,sizeThatFits: 更快,也更容易眼睛。

关于iphone - 当 NSString 包含表情符号时如何获取 NSString 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15965525/

相关文章:

iphone - 通过 CGAffineTransformScale 计算的边界、帧和帧之间的差异

ios - 设置下载NSData的进度条

objective-c - iOS:如何使用 XIB 以编程方式创建 View ,但不使用 View Controller

ios - MPMusicPlayerController 第一次不工作

iphone - 即使应用程序未运行,如何调用方法? iOS

ios - 使用带有对象的协议(protocol)来获取对象的实例

iphone - 如何在整个应用程序中展示 iAds?

iphone - 使 UIScrollView (和内容)不透明

iphone - 使用动画更改路径的颜色 - iPhone Dev

objective-c - Objective-C 中的只读分层模型