iOS-frame布局浮點(diǎn)數(shù)導(dǎo)致對(duì)齊問題

一、問題

某些需求需要用到button 和 label,并且需要同一行對(duì)齊,例如某個(gè)提示欄,上面有一部分提示文字不可點(diǎn)擊,但是有一部分文字可以點(diǎn)擊并跳轉(zhuǎn)。因此通過sizeWithAttributes或者其他系統(tǒng)方法計(jì)算字符串size,然后設(shè)置button的大小為對(duì)應(yīng)title計(jì)算出來的大小,label對(duì)齊button,并且大小設(shè)置為對(duì)應(yīng)text字符串的大小,在坐標(biāo)和大小一樣的情況下出現(xiàn)了,字體沒對(duì)齊的情況:

二、復(fù)現(xiàn)問題:

創(chuàng)建一個(gè)button 和 一個(gè)label,坐標(biāo)如下:

frame = (0 50; 199.131 35.8008)

frame = (199.131 50; 199.131 35.8008)

研究一下發(fā)現(xiàn),兩個(gè)view的y坐標(biāo)是一樣的,輸出了背景顏色也沒看到兩個(gè)view背景區(qū)域不同,進(jìn)一步發(fā)現(xiàn)當(dāng)x、y的值也為浮點(diǎn)數(shù)的情況下偏差會(huì)更大,然后嘗試將frame的值通過全部取整后發(fā)現(xiàn)兩個(gè)view對(duì)齊了,如下圖:


三、結(jié)論

button 和 label內(nèi)部對(duì)浮點(diǎn)坐標(biāo)的處理不同,如果需要不同的view對(duì)齊的時(shí)候,并且使用frame布局的時(shí)候,要保證frame的值都是整數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容