具有零单元间距的UICollectionView

时间:2016-10-25 05:12:41

标签: ios iphone uicollectionview swift3 uicollectionviewlayout

我已经关注this answer并尝试每行实现5个单元格,当我查看iPhone 6& iPhone SE如下。

但是当我尝试在iPhone 6 Plus上运行它时会出现问题。任何人都可以帮我解决这个问题吗?

这是我的代码。

screenSize = UIScreen.main.bounds
screenWidth = screenSize.width
screenHeight = screenSize.height
let itemWidth : CGFloat = (screenWidth / 5)

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.itemSize = CGSize(width: itemWidth, height: itemWidth)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.sectionInset = UIEdgeInsets(top: 10.0, left: 0, bottom: 10.0, right: 0)
collectionView!.collectionViewLayout = layout

2 个答案:

答案 0 :(得分:3)

必须是

let itemWidth : CGFloat = (screenWidth / 5.0)

所以结果不会四舍五入。

<强>更新

请确保使用故事板创建UICollectionView,请记住将autolayout设置为集合视图的大小,以便将其更新为当前屏幕大小。

更新2

如果您使用故事板,则无需创建UICollectionViewFlowLayout。您可以从故事板设置插入和间距。 然后在.m文件中执行此操作以确定项目的大小。

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
     return yourDesiredSize;
}

答案 1 :(得分:2)

要修复空格,每个单元格的大小应为整数。然后,可以将四舍五入的数字之和与collectionView的大小之差平均分配或放在一个单元格中。

library(tidyverse)
library(lubridate)

location <- c("a", "b", "c", "d")
a_dtm <- ymd_hm(c(NA, "2019-06-05 10:30", "2019-06-05 10:45", "2019-06-05 10:50"))
b_dtm <- ymd_hm(c("2019-06-05 10:30", NA,  "2019-06-05 10:48", "2019-06-05 10:50"))
a_val <- c(NA, 6, 4, 2)
b_val <- c(5, NA, 3, 2)

df <- data.frame(location, a_dtm, b_dtm, a_val, b_val)

as_tibble(df)
# A tibble: 4 x 5
#location a_dtm               b_dtm               a_val b_val
#<fct>    <dttm>              <dttm>              <dbl> <dbl>
#1 a        NA                  2019-06-05 10:30:00    NA     5
#2 b        2019-06-05 10:30:00 NA                      6    NA
#3 c        2019-06-05 10:45:00 2019-06-05 10:48:00     4     3
#4 d        2019-06-05 10:50:00 2019-06-05 10:50:00     2     2

val_most_recent <- c(5,6,3,2)
desired_df <- cbind(df, val_most_recent)
as_tibble(desired_df)

#location a_dtm               b_dtm                  a_val    b_val val_most_recent
#<fct>    <dttm>              <dttm>                 <dbl>   <dbl>      <dbl>
#1 a        NA                  2019-06-05 10:30:00    NA     5           5
#2 b        2019-06-05 10:30:00 NA                      6    NA           6
#3 c        2019-06-05 10:45:00 2019-06-05 10:48:00     4     3           3
#4 d        2019-06-05 10:50:00 2019-06-05 10:50:00     2     2           2