UICollectionView ImageView问题

时间:2016-04-07 00:43:32

标签: ios swift uiimageview uicollectionview

我的collectionview出现了一些严重的问题。 所以我取异步。来自api的一些数据并设置数据变量,而不是重新加载我的collectionview。我的collectionview基本上包含一些带有api数据的单元格和一个带有加号图标的单元格。单元格的形状和布局是相同的,所以我使用了相同的collectionviewcell类。

我计算了这样的项目数量:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  return data.count + 1
}

做我的手机这样的事情:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
  let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! OverviewUserCell

  if(indexPath.row == data.count) {
    cell.userImageView.image = UIImage(named: "plus")!
    //some additional coloring and stuff
  } else {
    cell.userImageView.image = UIImage(named: "oma")!
    //some additional coloring and stuff
  }
  cell.contentView.frame = cell.bounds
  cell.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
  cell.layer.cornerRadius = 8

  return cell
}

我的单元格本身包含一个圆形图像和一个标签:

class OverviewUserCell: UICollectionViewCell {

  @IBOutlet weak var nameLabel: UILabel!
  @IBOutlet weak var userImageView: UIImageView!

  override func layoutSubviews() {
    super.layoutSubviews()
    self.makeItCircle()
  }

  func makeItCircle() {
    self.userImageView.layer.masksToBounds = true
    self.userImageView.layer.cornerRadius  = CGFloat(roundf(Float(self.userImageView.frame.size.height/2.0)))
  }

}

不知何故(可能是因为不同的图像尺寸)图像视图的帧发生了变化,或类似的事情,因为加号图像不是圆的,但我希望它保持不变。我为单元格中的每个元素添加了约束。如果我不加载数据,图像是完美的圆形,但是当加载数据并重新加载集合视图时,加号图像不再是圆形。

图像的大小和位置应相同。

1 个答案:

答案 0 :(得分:1)

尝试设置UIImageView的圆角半径,而不是设置单元格的圆角半径。但在此之前,请确保您的UIImage视图的高度应等于宽度。

在设置imageview.layer.cornerRadius = 8之前; 添加以下行:imageview.layoutIfNeeded();