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

在Objective-c中没有获得正确的UILabel高度

在Objective-C中,要获取正确的UILabel高度,可以通过以下步骤实现:

  1. 首先,确定你的UILabel的内容是多行文本。如果只是单行文本,获取高度的需求就不存在了。
  2. 使用NSString的方法计算文本的高度。你可以使用以下方法:
代码语言:txt
复制
NSString *text = @"Your text goes here";
UIFont *font = [UIFont systemFontOfSize:17.0]; // 设置UILabel的字体大小
CGSize constraintSize = CGSizeMake(labelWidth, MAXFLOAT); // 设置UILabel的宽度,高度设置为MAXFLOAT
CGSize labelSize = [text boundingRectWithSize:constraintSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil].size;
CGFloat labelHeight = ceilf(labelSize.height); // 向上取整得到正确的UILabel高度

这段代码使用NSString的boundingRectWithSize方法计算UILabel的高度。其中,text是UILabel的文本内容,font是UILabel的字体大小,labelWidth是UILabel的宽度。我们将高度限制为MAXFLOAT来获取UILabel的准确高度。最后,通过ceilf函数向上取整,得到正确的UILabel高度。

  1. 然后,你可以使用得到的UILabel的高度来调整UILabel的frame。
代码语言:txt
复制
CGRect labelFrame = label.frame;
labelFrame.size.height = labelHeight;
label.frame = labelFrame;

将获取到的UILabel的高度赋值给UILabel的frame的height属性,从而调整UILabel的高度。

通过以上步骤,你可以在Objective-C中获取正确的UILabel高度。

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

相关·内容

UILabel开发常用功能总结

项目开发,我们经常会遇到在这样情形: 1、一个UILabel 使用不同颜色或不同字体来体现字符串 iOS 6 以后我们可以很轻松实现这一点,官方API 为我们提供了UILabel...iOS UILabel显示不同字体和颜色"; labelStr.textColor = [UIColor lightGrayColor]; labelStr.font = [UIFont systemFontOfSize...APP时,我们会用到给文字加下划线,表示重视,给价格加划线表示打折了 // label添加下划线 UILabel *label = [[UILabel alloc]initWithFrame:(CGRectMake...,让图片始终能恰好文字后面。...有时文字多少是不确定,这时就需要我们判断这些文字宽和高,以便于正确定义label位置大小 NSString *layoutStr = @"iOS UILabel自适应宽度"; UILabel

93920
  • 属性“__attribute__”Objective-C应用

    属性“__attribute__”Objective-C应用       关于__attribute__,你可能用不多,但是一定经常见到,系统Foundation框架,__attribute...1.format       format用来对格式化字符串参数使用情况进行检查,例如在使用NSLog函数进行输出时,如果我们传入可变参数没有格式化字符串中使用,编译器会提示警告,如下: ?...这是一种非常强大机制,实际应用也非常频繁,例如对以一个拥有模块化和路由功能应用程序,可以通过这种方式来自动化进行路由注册(无需手动调用),需要注意,constructor与destructor...8. objc_requires_super       这个属性用来修饰Objective-C父类方法,如果子类进行了重写,重写方法没有调用父类方法,则会进行编译器提示。...实际编程,很多时候,都是由于子类重写了父类方法造成不可预知问题,通过使用这个属性可以有效对开发者进行提示,例如: ?

    2.3K20

    没有品牌忠诚度时代获得和留住客户(Technology)

    整个购买过程,消费者洞察力越来越强,他们优先考虑更好、更简单、更清晰购物体验,其中甚至包括最基本元素,如轻松获取联系信息和更方便渠道。...随着忠诚度下降,零售商现在面临挑战是需要在正确时间,通过正确渠道,按照客户条件重新赢得失去客户,或者获得客户, 全渠道体验 超互联时代,提供更多产品和整合各种渠道将是最大化品牌互动关键...对于品牌来说,更重要是让对话在所有渠道上无缝连接,以确保客户可以在任何平台上接听对话,而且转换过程不会丢失任何东西。 事实上,客户对这类品牌忠诚度要高出32%,这使得他们很容易找到购买渠道。...品牌宣传关键是让用户生活更轻松,并消除端到端购买过程摩擦,辅之以即时支持渠道,以缩短解决问题时间。...如果品牌能够学会如何最好地帮助用户,并告知他们每个渠道功能,那么未来获得胜利可能就更大了。 未来客户群 没有面对面互动情况下,剩余市场份额将由零售商充分利用综合数字渠道赢得。

    50430

    Android获得控件屏幕绝对坐标

    (location);//获取整个屏幕内绝对坐标 location [0]--->x坐标,location [1]--->y坐标 getLocationOnScreen 计算该视图全局坐标系x...,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏高度)//获取在当前屏幕内绝对坐标 getLocationInWindow 计算该视图它所在widnow坐标x,y值,获取整个窗口内绝对坐标...getLeft , getTop, getBottom,getRight 这一组是获取相对它父亲里坐标 如果在ActivityOnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些...onWindowFocusChanged(boolean hasFocus)获取为好 即覆写ActivityonWindowFocusChanged(boolean hasFocus)方法 XXX_Activity...int[] location2 = new int[2] ; view.getLocationOnScreen(location2);//获取整个屏幕内绝对坐标

    2.1K20

    PHPstrpos函数正确使用方式

    首先简单介绍下 strpos 函数,strpos 函数是查找某个字符字符串位置,这里需要明确这个函数作用,这个函数得到是位置。 如果存在,返回数字,否则返回是 false。...echo '不存在'; } 输出了’不存在’;原因是因为 ‘沈’ ‘沈唁志博客’第 0 个位置;而 0 if 中表示了 false,所以,如果用 strpos 来判断字符串是否存在某个字符时...必须使用===false 必须使用===false 必须使用===false 重要事情说三遍,正确使用方式如下 // 判断‘沈唁志博客’是否存在‘博客’这个词 if (strpos('沈唁志博客...,是时候为智商讨个说法了,事实上输出是’不存在’,细心童鞋会发现这个 1 是不带引号,strpos 第二个参数必须是字符串型,因此,如果你是循环或者其他情况下调用 strpos 函数,而且不确定第二个参数类型...原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:PHPstrpos函数正确使用方式

    5.2K30

    android如何获取view布局高度与宽度详解

    前言 可能很多情况下,我们都会有activity获取view 尺寸大小(宽度和高度需求。面对这种情况,很多同学立马反应:这么简单问题,还用你说?你是不是傻。。...当我们 onCreate() 方法获取某个 View 组件宽度和高度,直接调用 getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight...OnPreDrawListener 监听事件 视图将要绘制时调用该监听事件,会被调用多次,因此获取到视图宽度和高度后要移除该监听事件。...UI 事件队列会按顺序处理事件, setContentView() 被调用后,事件队列中会包含一个要求重新 layout message,所以任何 post 到队列 Runnable 对象都会在...,需要在一次add代码创建view,使用上面的方法无法获得宽高,因为我使用是ScrollView。

    6K10

    高PR值网站怎么获得导入连接

    这几天忙着在给公司年会做策划,真累呀,每年沈阳·K友汇都是公司一个大项目,所以投入精力还是比较大,前几天谈论了一个站长要做到是持之以恒,坚持不懈得到了需要朋友认可,很高兴,今天谈谈关于高PR...从高PR网站获得导入连接,主要是为了获得PR值传递,同样也会获得网站权重传递.前几次我们谈论到了广泛链接来源和站长seo常用隐藏连接等其他增加权重方法,虽然不建议使用隐藏连接,但是这个的确不失为一个办法啊...第一种情况自从hao123国内兴起后,导航类网站如雨后春笋般出现.这样导航站PR值都很高,这是一个获得高质量链接途径,放在导航站首页相当于一个免费高质量链接,以后再有这样信息,都要申请加入...,只要通过审核,网站都能显示首页,由此可以获得一个高质量外部连接。...总之,导入连接和美国选举总统差不多,需要投票选举,一个网站获得票数越多,越说明有威望,那么高质量导入连接相当于一个社会上有威望、有地位名流投票,有可能会引导其他人也同样投票,而普通导入连接就是社会上普通民众

    2.1K10

    日志记录Java异常信息正确姿势

    遇到问题 今天遇到一个线上BUG,执行表单提交时失败,但是从程序日志中看不到任何异常信息。...原因分析 先来看一下Java异常类图: ? Throwable是Java中所有异常信息顶级父类,其中成员变量detailMessage就是调用e.getMessage()返回值。...enableSuppression) suppressedExceptions = null; } 显然,从源码可以看到Throwable默认构造函数是不会给detailMessage...所以,程序日志不要单纯使用getMessage()方法获取异常信息(返回值为空时,不利于问题排查)。...正确做法 Java开发,常用日志框架及组件通常是:slf4j,log4j和logback,他们关系可以描述为:slf4j提供了统一日志API,将具体日志实现交给log4j与logback。

    2.6K40

    iOS 面试策略之语言工具-Objective-C

    Objective-C 是苹果为 iOS 和 Mac 开发量身定制语言。它随着 iPhone 出现而大火,直到今天国内外大多数 App 依然是用 Objective-C 写。...每一个线程都有且仅有一个 runloop 与其对应,没有线程,就没有 runloop。 其中所有线程,只有主线程 runloop 是默认启动,main 函数会设置一个 NSRunLoop 对象。...其他线程,runloop 默认是没有启动,我们可以通过 [NSRunLoop currentRunLoop] 来获得。...而所谓 block,就是 Objective-C 对于闭包实现。闭包就是没有名字函数,或者理解为指向函数指针。 7.什么是 block?它和代理区别是什么?...关键词:#回调 iOS 开发,block 和代理都是回调方式。

    68120

    内网穿透神器:Ngrok支付正确使用姿势

    然而在实际开发测试环境,我们一般都是在内网开发,所以说对于支付测试是一件比较麻烦事情。...Ngrok ngrok 是一个反向代理,通过公共端点和本地运行 Web 服务器之间建立一个安全通道。ngrok 可捕获和分析所有通道上流量,便于后期分析和重放(百度百科)。...1.7+以后不再开源,收费才是持续发展动力 国内也有相应ngrok服务 natapp、frp、nat123端口映射、内网通、花生壳等等,这里就不一个个介绍了,有兴趣可以自行谷歌,毕竟今天主角是Ngrok...客户端和服务端生成/data/ngrok/bin目录下: bin/ngrokd 服务端 bin/ngrok linux客户端 bin.../ngrok: /lib/ld-musl-x86_64.so.1: bad ELF interpreter: 没有那个文件或目录 注意事项 防火墙需要开放4443端口,否则是无法连接成功 微信二维码支付回调是需要域名认证

    2.4K30

    iOS动态更新补丁策略JSPatch运用基础一

    例如,如果想要通过JavaScript代码项目中弹出一个警告框,Objective-C代码插入如下代码: - (void)viewDidLoad {     [super viewDidLoad]...文件没有编写任何其他方法,运行工程,可以看到程序并没有崩溃,ViewController执行了creatView方法。         ...,直接在使用时候对其进行引用: require('UIView').alloc().init() 2.JavaScript文件中进行Objective-C方法调用     进行Objective-C...(UIColor.colorWithRed_green_blue_alpha(0,0.5,0.5,1)) 对于Objective-C属性变量,JavaScript只能使用getter与setter...3.JavaScript操作与修改Objective-C类     JSPatch最大应用是应用运行时动态操作和修改类。

    88220

    DateTimeExtJs无法正确序列化问题

    这几天在学习ExtJs + Wcf过程,发现一个问题,如果Class中有成员类型为DateTime,即使我们正常标识了[DataMember],序列化成JSON时,会生成一种特有的格式: .....这种格式ExtJs并不识别,导致最终组件,比如Grid上无法正常显示,解决办法有二个: 1.将Class成员,手动改成String类型,不过个人不推荐这种方式,毕竟将数据类型都改了,相应服务端很多地方都可能会做相关修改...2.用JS在前台调用时,用代码处理返回JSON字符串格式,使之符合ExtJs规范(这个方法是从博客园"小庄"那里学来,呵) Ext.onReady(function() { //这个函数演示了怎样把服务器端...DateTime类型转为Javascript日期         function setAddTime(value, p, record) {             var jsondate...设置GridColumns时,类似如下处理: var grid = new Ext.grid.GridPanel({             store: store,

    2.7K100

    内网穿透神器:Ngrok支付正确使用姿势

    然而在实际开发测试环境,我们一般都是在内网开发,所以说对于支付测试是一件比较麻烦事情。...Ngrok ngrok 是一个反向代理,通过公共端点和本地运行 Web 服务器之间建立一个安全通道。ngrok 可捕获和分析所有通道上流量,便于后期分析和重放(百度百科)。...1.7+以后不再开源,收费才是持续发展动力 国内也有相应ngrok服务 natapp、frp、nat123端口映射、内网通、花生壳等等,这里就不一个个介绍了,有兴趣可以自行谷歌,毕竟今天主角是Ngrok...客户端和服务端生成/data/ngrok/bin目录下: bin/ngrokd 服务端 bin/ngrok linux客户端 bin.../ngrok: /lib/ld-musl-x86_64.so.1: bad ELF interpreter: 没有那个文件或目录 注意事项 防火墙需要开放4443端口,否则是无法连接成功 微信二维码支付回调是需要域名认证

    2.5K30

    Gradle依赖方式——LombokGradle正确配置姿势

    写过java都知道,lombok几乎项目中处于不可或缺一部分,但是lombokGradle项目中配置并非人人都知道。...很多人在项目依赖中直接这样写 compile "org.projectlombok:lombok:1.18.4" 但这样处理Gradle 5.0以上被命令禁止了,4.x高级版本编译时也会有对应告警...并且在打jar/war包时候,并不需要把lombok依赖打进包,所以Lombok依赖上应该是compile only(仅在编译时生效)才对。...Lombok正确配置 回到开头官方告警,有这么一句 Detecting annotation processors on the compile classpath is deprecated and...5.0环境下,注解处理将不再compile classpath,需要手动添加到annotation processor path。

    12K41

    Swift编程小技巧

    for in + where let items = [1, 2, 3, 4] items.filter{$0 % 2 == 0}.forEach { print($0) } 可以看出代码简洁度并没有很大提升...4、Defer保证代码块控制流退出前被调用 defer 所声明代码块会在当前代码执行退出后被调用: func test(code: Int) { defer { print(...也可以实现类似的功能,可以参考:Objective-C实现Swiftdefer 5、布尔值取反 在任何编程语言中,布尔值都是最常用和最简单数据类型之一。...6、数组内元素类型转换 常见情况获取一个视图所有子视图后,需要给某一类视图做一些操作,以UILabel为例 使用for in 循环 for subview in self.view.subviews..., NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"%d -- %@", idx, obj); }]; 8、静态工厂方法 Swift使用静态工厂方法和属性来执行对象设置可能是一种将设置代码与实际逻辑清晰分开好方法

    95411

    MIT校长评中美科技:没有人能从他人失败获得成功

    在任何比赛,成功都是来自更努力训练和更快奔跑——而不是希望您挑战者会绊倒。为了保证我们国家未来经济健康和国家安全,我们需要一项全面的,具有前瞻性国家战略,以使美国保持科学技术最前沿。...该立法将授权五年内为研究和相关活动提供1000亿美元新资金。...例如,人工智能,重点不会放在进一步完善当前算法上,而是开发深刻新方法,使机器能够使用小得多数据集“学习”,这是一项根本性进步,将减少对庞大数据集需求。这是中国拥有巨大优势领域。...其他模式可能适用于其他机构-但美国需要在全国范围内鼓励更多此类努力,以从我们联邦科学投资中获得全部收益 Some may worry that this new approach could impair...一个国家,就像一个人一样,不会通过自己止步不前,并希望其他人失败而获得成功。成功是指那些依靠自己力量,从过去经验中学习,但不被自己过去所局限的人。

    51550
    领券