专栏首页欧阳大哥的轮子UILabel显示定时器文本的跳动问题解决方案

UILabel显示定时器文本的跳动问题解决方案

先看一个有问题的展示效果:

显示跳动的文本

上面的gif图会发现在显示验证码计数时出现跳动和闪烁的问题。目前大多数用来实现定时器显示的控件都是UILabel。

在iOS9以前系统默认的英文字体是Helvetica, 这种字体每个数字的宽度都是相等的。而在iOS9以后默认的英文字体变为San Fransico字体,这种字体每个数字的宽度是不相等的。

正是因为数字宽度的不相等就导致了用UILabel来显示定时器文本时出现文字跳动闪烁的问题。 因此解决的方案就是选用一种等宽数字字体显示即可。为此有两个解决方案:

  1. 用Helvetica字体代码默认字体。
   UILabel *label = [UILabel new];
   label.font = [UIFont fontWithName:@"Helvetica" size:16];
  1. 用UIFont的新API:+ (UIFont *)monospacedSystemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight;
  UILabel *label = [UILabel new];
  //记得这个API是iOS9以后才有效!!!
  label.font = [UIFont monospacedSystemFontOfSize:16 weight:UIFontWeightRegular];  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 静态拦截iOS对象方法调用的简易实现

    最近出现了几篇关于二进制重排启动优化的文章。所有方案中都需要事先统计所有的函数调用情况,并根据函数调用的频次来进行代码的重排。

    欧阳大哥2013
  • 深入iOS系统底层之XCODE对汇编的支持介绍

    一个好的IDE不仅要提供舒适简洁和方便的源代码编辑环境,还要提供功能强大的调试环境。XCODE是目前来说对iOS应用开发支持的最好的IDE(虽然Visual S...

    欧阳大哥2013
  • iOS标准库中常用数据结构和算法之内存池

    内存池提供了内存的复用和持久的存储功能。设想一个场景,当你分配了一块大内存并且填写了内容,但是你又不是经常去访问这块内存。这样的内存利用率将不高,而且无法复用。...

    欧阳大哥2013
  • python 数据分析基础 day15-pandas数据框的使用获取方式1:使用DataFrame.loc[]获取方式2:使用DataFrame.iloc[]

    今天是读《pyhton数据分析基础》的第15天,今天读书笔记的内容为使用pandas模块的数据框类型。 数据框(DataFrame)类型其实就是带标题的列表。...

    billyang916
  • 极目智能程建伟:在市场未定型时踏步入场,用7年时间兼顾打造ADAS前装和后装 | 镁客请讲

    镁客网
  • 算法导论之插入排序和归并排序

      作为一名前线的码农不时地看一下算法和数据结构还是很有必要的,虽然《算法导论》这本书很难啃,但还是有必要啃一下的。算法这东西和某种编程语言关系不大,在大学的课...

    lizelu
  • Colly源码解析——框架

            Colly是一个使用golang实现的数据抓取框架,我们可以使用它快速搭建类似网络爬虫这样的应用。本文我们将剖析其源码,以探析其中奥秘。(转载请...

    方亮
  • DevOps是云计算时代的开发与运营

    DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA...

    张善友
  • SCRT连接linux,编辑文件Back

    刚刚新建了一个虚拟机,准备做python的学习,使用的是python3版本。使用SCRT连接的时候,当编辑文件或者是进入python交互界面编辑的时候,使用Ba...

    用户2398817
  • 【译】送给你的代码审查问题手册

    代码审查列表,是代码审查的明确规则和指导手册,它可以使代码审查为你的团队带来更多好处,并且能够显著提升代码审查的速度。

    Jackeyzhe

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动