我的組合布局中的 interItemSpacing 有問題。我的每一行都有一個布局組,其中包含幾個布局項(每個都有不同的小數寬度)。我已經設定layoutGroup.interItemSpacing = .fixed(0)
有時專案之間只有一個像素的線,盡管所有專案的 fractionalWidths 完美地加起來為 1.0。我根據單元格的內容動態計算這些分數寬度。一個例子:
Item 1: 0.2244798445859886
Item 2: 0.0999484835067196
Item 3: 0.2255459136606516
Item 4: 0.2244798445859886
Item 5: 0.2255459136606516
正如您在螢屏截圖中看到的,最后兩項之間有一個小空間:

奇怪的是,這個問題并不總是發生。它似乎取決于集合視圖的大小。也許某種內部舍入問題?有沒有人經歷過這個?
uj5u.com熱心網友回復:
這個問題是由于四舍五入...
當集合視圖布置其單元格時,它會將 x、y、寬度和高度值四舍五入以匹配螢屏比例。
因此,假設您的集合視圖寬度是375,對于第二個單元格,您說:
I want a cell width of 0.0999484835067196 * 375
這等于 37.48068131501985
在@2x 設備(例如 iPhone 8)上,該值將四舍五入到最接近的二分之一......在這種情況下37.5
在@3x 設備(例如 iPhone 12 Pro)上,該值將四舍五入到最接近的三分之一……在這種情況下37.3333333333...
使用您的寬度陣列,在集合視圖寬度為 的 iPhone 8 上375,在單元格布局后檢查單元格,結果如下:
Cell: 0 Array: 0.2244798445859886 Calc: 84.17994171974573 Actual: 84.0
Cell: 1 Array: 0.0999484835067196 Calc: 37.48068131501985 Actual: 37.5
Cell: 2 Array: 0.2255459136606516 Calc: 84.57971762274435 Actual: 84.5
Cell: 3 Array: 0.2244798445859886 Calc: 84.17994171974573 Actual: 84.0
Cell: 4 Array: 0.2255459136606516 Calc: 84.57971762274435 Actual: 84.5
Collection View Width: 375.0
Array Sum: 1.0
Calculated Sum: 375.0
Actual Sum: 374.5
如你所見,
- 您指定的百分比加起來
1.0 - 你的計算值加起來
375 - 但是...實際單元格寬度僅加起來
374.5
這留下了額外的 1/2 點要填充,因此是“額外空間”。
您不會一直看到這種情況,可能是因為您在具有不同寬度和螢屏比例的不同設備上運行。
例如,如果您的集合視圖寬度為360-pts,您會得到:
Cell: 0 Array: 0.2244798445859886 Calc: 80.8127440509559 Actual: 81.0
Cell: 1 Array: 0.0999484835067196 Calc: 35.981454062419054 Actual: 36.0
Cell: 2 Array: 0.2255459136606516 Calc: 81.19652891783458 Actual: 81.0
Cell: 3 Array: 0.2244798445859886 Calc: 80.8127440509559 Actual: 81.0
Cell: 4 Array: 0.2255459136606516 Calc: 81.19652891783458 Actual: 81.0
Collection View Width: 360.0
Array Sum: 1.0
Calculated Sum: 360.0
Actual Sum: 360.0
并且不需要“額外的半分”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416816.html
標籤:
