一、問題
某些需求需要用到button 和 label,并且需要同一行對齊,例如某個提示欄,上面有一部分提示文字不可點擊,但是有一部分文字可以點擊并跳轉。因此通過sizeWithAttributes或者其他系統方法計算字符串size,然后設置button的大小為對應title計算出來的大小,label對齊button,并且大小設置為對應text字符串的大小,在坐標和大小一樣的情況下出現了,字體沒對齊的情況:
二、復現問題:
創建一個button 和 一個label,坐標如下:
frame = (0 50; 199.131 35.8008)
frame = (199.131 50; 199.131 35.8008)
研究一下發現,兩個view的y坐標是一樣的,輸出了背景顏色也沒看到兩個view背景區域不同,進一步發現當x、y的值也為浮點數的情況下偏差會更大,然后嘗試將frame的值通過全部取整后發現兩個view對齊了,如下圖:
三、結論
button 和 label內部對浮點坐標的處理不同,如果需要不同的view對齊的時候,并且使用frame布局的時候,要保證frame的值都是整數。