【问题标题】:boundingRectWithSize crash with emojiboundingRectWithSize 与表情符号崩溃
【发布时间】:2017-02-28 04:53:52
【问题描述】:

当我使用boundingRectWithSize计算文本的高度时,它崩溃了。我发现它可能是因为文本有一些表情符号。 有人可以告诉我如何解决这个问题。

    CGFloat kScreenMargin = 15.;
    CGFloat kScreenWidth = [UIScreen mainScreen].bounds.size.width;

    self.content = @"Eefggg????????‍????????????‍????";

    CGFloat contentH = [self.content boundingRectWithSize:CGSizeMake(kScreenWidth - 2 * kScreenMargin, MAXFLOAT)
                                                  options:NSStringDrawingUsesLineFragmentOrigin
                                               attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size.height;

Here is the crash screenshot

【问题讨论】:

    标签: ios crash emoji


    【解决方案1】:

    你先转换成Encoding字符串,然后得到高度:

    CGFloat kScreenMargin = 15.;
        CGFloat kScreenWidth = [UIScreen mainScreen].bounds.size.width;
    NSString *strEmo = @"Eefggg??‍???‍?"
    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    self.content = goodValue;
    CGFloat contentH = [self.content boundingRectWithSize:CGSizeMake(kScreenWidth - 2 * kScreenMargin, MAXFLOAT)
                                                      options:NSStringDrawingUsesLineFragmentOrigin
                                                   attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size.height;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多