首页
学习
活动
专区
工具
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

94820
  • 属性“__attribute__”在Objective-C中的应用

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

    2.4K20

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

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

    50930

    Android获得控件在屏幕中的绝对坐标

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

    2.1K20

    在PHP中strpos函数的正确使用方式

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

    5.2K30

    在高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 和代理都是回调的方式。

    68420

    内网穿透神器: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

    DateTime在ExtJs中无法正确序列化的问题

    这几天在学习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...设置Grid的Columns时,类似如下处理: 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

    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的最大应用是在应用运行时动态的操作和修改类。

    88820

    Gradle依赖方式——Lombok在Gradle中的正确配置姿势

    写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道。...很多人在项目依赖中直接这样写 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。

    12.6K41

    在平衡中追寻高度:探秘AVL树的自我调节之美

    1.2 平衡因子 在AVL树中,每个节点都有一个平衡因子(Balance Factor),它表示该节点的右子树高度减左子树高度的差。平衡因子的值可以是**-1、0或1**。...如果它有 n 个结点,其高度可保持在 O ( log2n ),搜索时间复杂度为 O(log2n )。...二叉搜索树在实际中基本不太可能实现完全平衡,但是理论上可以,即满二叉树。后面我们学的多叉平衡搜索树在现实中可以做到完全平衡。...下面举两个左单旋的例子。 无论是这四种旋转中的哪一个,都要保证以下两点:首先在旋转的过程中要保证这棵树是搜索树,其次经过旋转后,这棵树应该变成平衡树,且降低这个子树的高度。...如果中序遍历可以得到一个有序的序列,就说明为二叉搜索树。 验证其为平衡树。每个结点左右子树高度差的绝对值不超过1。其次检查结点的平衡因子是否计算正确。

    8810

    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中实现Swift中的defer 5、布尔值取反 在任何编程语言中,布尔值都是最常用和最简单的数据类型之一。...6、数组内元素的类型转换 常见的情况在获取一个视图的所有子视图后,需要给某一类视图做一些操作,以UILabel为例 使用for in 循环 for subview in self.view.subviews..., NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"%d -- %@", idx, obj); }]; 8、静态工厂方法 在Swift使用静态工厂方法和属性来执行对象的设置可能是一种将设置代码与实际逻辑清晰分开的好方法

    96311

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

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

    51650

    iOS工程师必看的 20 道 面试题

    闭包就是没有名字的函数,或者理解为指向函数的指针。 3....它的基本原理是,一个对象在没有任何强引用指向它时,其占用的内存会被回收。反之,只要有任何一个强引用指向该对象,它就会一直存在于内存中。 strong 代表着强引用,是默认属性。...在Swift和Objective-C的混编项目中,如何在Swift文件中调用Objective-C文件中已经定义的方法?如何在Objective-C文件中调用Swift文件中定义的方法?...Swift中若要使用Objective-C代码,可以在ProjectName-Bridging-Header.h里添加Objective-C的头文件名称,Swift文件中即可调用相应的Objective-C...Swift文件中若要规定固定的方法或属性暴露给Objective-C使用,可以在方法或属性前加上@objc来声明。

    3.8K40
    领券