先看一個有問題的展現效果: git
上面的gif圖會發如今顯示驗證碼計數時出現跳動和閃爍的問題。目前大多數用來實現定時器顯示的控件都是UILabel。bash
在iOS9之前系統默認的英文字體是Helvetica, 這種字體每一個數字的寬度都是相等的。而在iOS9之後默認的英文字體變爲San Fransico字體,這種字體每一個數字的寬度是不相等的。字體
正是由於數字寬度的不相等就致使了用UILabel來顯示定時器文本時出現文字跳動閃爍的問題。 所以解決的方案就是選用一種等寬數字字體顯示便可。爲此有兩個解決方案:spa
UILabel *label = [UILabel new];
label.font = [UIFont fontWithName:@"Helvetica" size:16];
複製代碼
UILabel *label = [UILabel new];
//記得這個API是iOS9之後纔有效!!!
label.font = [UIFont monospacedDigitSystemFontOfSize:16 weight:UIFontWeightRegular];
複製代碼