首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我如何获得 - [NSString sizeWithFont:forWidth:lineBreakMode:]工作?

您好!您想了解如何使用sizeWithFont:forWidth:lineBreakMode:方法来获取字符串的大小。这是一个Objective-C方法,用于计算给定字体、宽度和换行模式的字符串的大小。

在iOS和macOS中,这个方法已经被弃用,您应该使用boundingRectWithSize:options:attributes:context:方法来代替。这个方法可以更灵活地处理多行文本和不同的字体属性。

以下是一个使用boundingRectWithSize:options:attributes:context:方法的示例:

代码语言:objective-c
复制
NSString *text = @"Hello, World!";
UIFont *font = [UIFont systemFontOfSize:14];
CGSize size = CGSizeMake(200, CGFLOAT_MAX);

NSDictionary *attributes = @{NSFontAttributeName: font};
CGRect rect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];

CGSize stringSize = rect.size;

在这个示例中,我们创建了一个字符串text和一个字体font。然后,我们设置了一个最大宽度为200点,并且允许字符串自由换行的CGSize。我们使用NSDictionary来存储字体属性,并将其传递给boundingRectWithSize:options:attributes:context:方法。最后,我们从返回的CGRect中获取字符串的大小。

如果您使用的是Swift,可以使用以下代码:

代码语言:swift
复制
let text = "Hello, World!"
let font = UIFont.systemFont(ofSize: 14)
let size = CGSize(width: 200, height: .greatestFiniteMagnitude)

let attributes = [NSAttributedString.Key.font: font]
let rect = text.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)

let stringSize = rect.size

这段代码与Objective-C版本非常相似,只是语法稍有不同。

希望这个答案能够帮助您解决问题!如果您有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UITableViewCell自适应网络不规则图片和文字组合的高度

列表样式 有时我们会需要对cell的图片和文字进行显示并完美自适配其大小,下面用有限的知识做了个适配,看着好像还能用,哈哈 直接上code 001 在tableview的获取cell高度的方法里写调用自定义...*)text { //获得当前cell高度 CGRect frame = [self frame]; //文本赋值 self.describe.text = text; //设置label的最大行数...self.describe.numberOfLines = 0; CGSize size = CGSizeMake(self.width-30, 1000); self.describeSize = [self.describe.text sizeWithFont...:self.describe.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping]; self.describe.frame...describe.height; self.frame = frame; } 003__02 网络不规则图片的自适应高度,记得导入SDWebImage -(void)setImageURLSize:(NSString

2.1K20
  • 【IOS开发基础系列】Table View开发专题

    navBarHeight, tabBarHeight, toolBarHeight, contentViewHeight]); 2.2.4 左滑删除实现         通过上面两步就实现了数据展示工作...第一种比较常见,在网上到处都是,这也是抄别人的。主要就是说自己定义一个view,弄成透明的,然后盖在TableView的上部和下部,这样就“隐藏”了。...nil ) {        if (isOpen == YES) {           //cell上的label高度自适应            CGSize size = [textStr sizeWithFont...2.2.15 AccessoryDisclosureIndicator按钮旋转效果实现 [ios]如何旋转UITableViewCellAccessoryDisclosureIndicator?...2.4.1.4 不要做多余的绘制工作。      在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。

    33220

    iPhone屏幕尺寸、分辨率及适配

    大家好,又见面了,是你们的朋友全栈君。...&& [[UIScreenmainScreen] nativeScale] == 3.0f) ——————————————————————————– 那么,同样的分辨率和scale,如何区分机型...注意限定控件元素内容区域宽度以及间距,并设置适当的LineBreakMode。表视图支持上下滑动,因此纵向上的表格行高和内容区域高度可按字号缩放。...具体编程时,调用 sizeWithFont/boundingRectWithSize 可动态计算每行 label 的自然宽度,一般title都会超过约束宽度,因此需设置 lineBreakMode指定Wrapping...适配心得》 《iOS8/Xcode6/iPhone6(+)适配》 《APP适配iOS8,iPhone6(+)截图简要说明》 《按比例快速兼容适配iPhone6/6 Plus》 《iOS的APP如何适应

    5.9K20

    干货 | 携程酒店iOS动态View的探索

    作者简介 姜睿东,2009年加入携程,从事无线研发,现在大住宿事业群负责酒店无线研发工作。 一直以来,Native App因为审核的原因,新版本不能很及时地上线。...JavaScript代码之间互相传值,这两者之间的对应关系如下图所示: Objective-C (and Swift) Types JavaScript Types nil undefined NSNull null NSString...this.textSize = 14; this.fontStyle = 0; this.textAlignment = 0; this.lineBreakMode...有了这些基础的JavaScript组件,接下去就可以如同在iOS中布局一样,开始用这些组件进行布局,如下代码片段示例了如何对一张图片进行布局。...所以,与其说本文是在探索iOS中动态View的解决方案,也不妨说成是对JSContex和JSValue如何运用的一些探讨,从实际的摸索中来看,灵活运用好JavaScriptCore,可以有无限多的可能。

    76620

    【死磕iOS】处理不等高TableViewCell的小花招

    课题一:如何计算Cell高度 方案一:直接法(面向对象) 想知道妹纸爱你有多深?直接去问妹纸本人吧! 嗯!Cell也是一样的,想知道cell到底有多高?直接问Cell本人就好了。...Cell",@"是第二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二个Cell",@"是第三个Cell"...拿到将要放入Lable的String NSString *stringForLabel = string; // 2....String总高度 static CGFloat fontSize = 17; CGFloat labelHeight = [stringForLabel sizeWithFont...但是,在CellForRow中拿到Cell高度后,如何传递给heightForRow代理方法呢?

    1.3K80

    RunLoop总结:RunLoop的应用场景(三)滚动视图流畅性优化

    为了表现出卡顿的效果,先自己实现了一下Cell,主要示例代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath...; UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(5, 99, 300, 35)]; label2.lineBreakMode...关于这一点,以前的做法是在Cell中定义一个public方法,用来计算Cell高度,然后计算完高度后,将高度存储在Cell对应的Model中(Model里定义一个属性来存高度),然后在渲染Cell时,...所有的图形堆栈一起工作以确保每次正确的显示。当你滚动整个屏幕的时候,数以百万计的颜色单元必须以每秒60次的速度刷新,这是一个很大的工作量。...所以设置不透明时,可以为GPU节省大量的工作,减少大量的消耗。 更加详细的说明,可以看绘制像素到屏幕上这篇文章,这是一篇关于绘制像素的非常棒?的文章,反复看了三遍。

    2.2K41

    绘图-Core Graphics

    (在drawRect函数中) 1.获取绘图上下文 2.创建并设置路径 3.将路径添加到上下文 4.设置上下文状态 5.绘制路径 6.释放路径 在使用Core Graphics 时有许多方式获得一个图形上下文...,这里介绍两种最为常用的获取方法 第一种方法就是创建一个图片类型的上下文。...调用UIGraphicsBeginImageContextWithOptions函数就可获得用来处理图片的图形上下文。利用该上下文,你就可以在其上进行绘图,并生成图片。...CGContextSetInterpolationQuality 背景内置颜色质量等级 CGImageCreateWithImageInRect 从原图片中取小图 字符串的 写入可用 nsstring...本身的画图方法 - (CGSize)drawInRect: (CGRect)rect withFont:(UIFont *)font lineBreakMode: (UILineBreakMode)

    1.5K30

    iOS学习巩固笔记-UIWebViewJavaScript

    HTML元素,比如添加、删除、修改网页元素 2.2 常见的JavaScript函数 alert(10); //弹框 document.getElementById(‘test’); //根据ID获得某个...*str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()"]; JS调用OC的说明 新的需求:点击按钮的时候拨打电话 但是在点击按钮的时候...withString:(NSString *)replacement //把string包装成SEL SEL selector = NSSelectorFromString(sel); 如何屏蔽警告...但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作。...invacation { //1.创建一个MethodSignature,签名中保存了方法的名称,参数和返回值 //这个方法属于谁,那么就用谁来进行创建 //注意:签名一般是用来设置参数和获得返回值的

    1.2K70

    Core Foundation & Foundation

    反过来,Foundation 也有 Core Foundation 无法胜任的工作,最大的来说就是自动引用计数功能,还有比如 NSBundle 在 Core Foundation 中也没有。...如何让旧的系统(Mac OS 9)和 NeXTSTEP 合成为一个新系统,这就需要一个更为底层的核心库可以供 Mac Toolbox 和 OPENSTEP 双方调用。...举个例子,NSString 是一个类簇,一个公开的抽象类,但每次创建一个 NSString 的实例时,实际上我们会获得其中一个私有子类的实例。...如果发现其不是 NSCFString,我们不会调用 CF 函数的实现来获得结果,而是通过给对象发送与函数功能相对应的 ObjC 消息(调用相对应的 NSString 的接口)来获得其结果。...如果是的话,就会直接调用 CFStringGetLength 函数的实现来获得字符串的长度;如果不是的话,会给对象发送 length 消息(调用 NSString 的- (NSUInteger)length

    51930

    OC最实用的runtime总结,面试、工作你看我就足够了!前言什么是runtime?如何应用运行时?

    前言 runtime的资料网上有很多了,部分有些晦涩难懂,通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension的实现原理...消息机制 另外利用runtime 可以做一些OC不容易实现的功能 动态交换两个方法的实现(特别是交换系统自带的方法) 动态添加对象的成员变量和成员方法 获得某个类的所有成员方法、所有成员变量 如何应用运行时...下面通过demo 一个个来讲解 一、交换两个方法的实现,拦截系统自带的方法调用功能 需要用到的方法 获得某个类的类方法 Method class_getClassMethod...,下面的方法中添加了一个类方法方便递归。...这块语言可能解释不太清楚,可以参考的demo,直接运行即可。

    1.3K120
    领券