当前位置: 首页 > 知识库问答 >
问题:

获取iOS 7中的NSString高度[重复]

谢清野
2023-03-14

我使用下面的代码从字符串长度计算标签的高度。我使用的是xcode 5.0,它在iOS 6模拟器中运行良好,但在iOS 7中运行不佳。

NSString* str = [[array objectAtIndex:i]valueForKey:@"comment"];

CGSize size = [className sizeWithFont:[UIFont systemFontOfSize:15]   
 constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

Height_1 = size.height;

如果iOS 7有任何解决方案,请提供帮助。提前致谢

共有3个答案

宗政欣可
2023-03-14
sizeWithFont

已弃用。使用

[string sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]}];

代替

年业
2023-03-14

尝试使用此

#define FONT_SIZE 15.0f
#define CELL_CONTENT_WIDTH 320.0f
#define CELL_CONTENT_MARGIN 20.0f


NSString *text;
CGSize constraint;
CGSize size;
CGFloat height;

text = [[array objectAtIndex:i]valueForKey:@"comment"];
constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

CGRect textRect = [text boundingRectWithSize:constraint
                                    options:NSStringDrawingUsesLineFragmentOrigin
                                    attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:FONT_SIZE]}
                                    context:nil];

size = textRect.size;


height = size.height;
闻人献
2023-03-14

这里有一个用于计算iOS6和iOS7高度的解决方案,我通过了一些参数使其可重用。

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

/**
*  This method is used to calculate height of text given which fits in specific width having    font provided
*
*  @param text       Text to calculate height of
*  @param widthValue Width of container
*  @param font       Font size of text
*
*  @return Height required to fit given text in container
*/

+ (CGFloat)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font
{
    CGFloat result = font.pointSize + 4;
    if (text)
    {
        CGSize textSize = { widthValue, CGFLOAT_MAX };       //Width and height of text area
        CGSize size;
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
        {
            //iOS 7
            CGRect frame = [text boundingRectWithSize:textSize
                                          options:NSStringDrawingUsesLineFragmentOrigin
                                       attributes:@{ NSFontAttributeName:font }
                                          context:nil];
            size = CGSizeMake(frame.size.width, frame.size.height+1);
        }
        else
        {
            //iOS 6.0
            size = [text sizeWithFont:font constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
        }
        result = MAX(size.height, result); //At least one row
    }
    return result;
}

希望这有所帮助,是的,任何建议都是值得赞赏的。快乐编码:)

对于iOS7及以上使用以下方法

+ (CGSize)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font {
    CGSize size = CGSizeZero;
    if (text) {
        //iOS 7
        CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil];
        size = CGSizeMake(frame.size.width, frame.size.height + 1);
    }
    return size;
}
 类似资料:
  • 我有以下问题。我把这个VBox包装在一个锚窗格中: 我想得到这个vbox的显示高度(即使在例如调整它周围的锚面板大小之后)。) 所以我尝试了以下方法: 但是由于某些原因,getHeight()只返回0。所以我如何得到那个vbox的高度?

  • 如何在 iOS 7 中计算带有 UI 文本视图的 UI 表查看器的高度? 我找到了很多类似问题的答案,但是< code>sizeWithFont:参与了每一个解决方案,这个方法已经被否决了! 我知道我必须使用但是如何计算我的TextView显示整个文本所需的高度呢?

  • 在Android系统中如何获得屏幕的可用高度?我需要的高度减去状态栏/菜单栏或任何其他可能在屏幕上的装饰,我需要它为所有设备工作。另外,我需要在onCreate函数中了解这一点。我知道这个问题以前有人问过,但我已经尝试过他们的解决方案,但没有一个奏效。以下是我尝试过的一些事情: 我已经在API7-17上测试了这段代码。不幸的是,在API 13的底部水平和垂直都有额外的空间,而在API 10、8和7

  • 我有一个文件里面有很长的文本。我想用以下代码将此文本放在NSString中: 此代码在具有 Xcode 5 的 Mac OSX 10.8 上工作正常,但在我使用 Xcode 8.3.3 的新 Mac OSX 10.13 上,对象 myString 仅包含长文本的第一部分。 这是一个新的问题,还是在新的OSX体系中发生了我不知道的变化?OSX 10.13或Xcode 8.3.3上的NSString对

  • 问题内容: React渲染元素后如何获取元素的高度? HTML ReactJS 结果 它正在计算渲染之前的容器高度(36像素)。我想获得渲染后的高度。在这种情况下,正确的结果应为18px。jsfiddle 问题答案: 看到这个小提琴(实际上更新了您的) 您需要钩住在render方法之后要运行的对象。在那里,您可以获得元素的实际高度。

  • 问题内容: 是否可以在node.js中获取图像的宽度和高度(在服务器端,而不是客户端)?我需要在我正在编写的node.js库中找到图像的宽度和高度。 问题答案: 是的,这是可能的,但是您需要安装GraphicsMagick或ImageMagick。 我都用过,我可以推荐GraphicsMagick,它要快得多。 一旦安装了程序及其模块,就可以执行以下操作来获取宽度和高度。