iOS-frame布局浮點數導致對齊問題

一、問題

某些需求需要用到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的值都是整數。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容