我有一个应用程序,屏幕分为四个相同的单元格。每个单元格都有图像,标签和颜色。我试图添加图像,但由于某种原因,只有第一个单元格中的图像有效。
这是我的代码: 在ViewController.swift中:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
colorArray += [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]
pictureArray += [UIImage(named: "budget")!, UIImage(named: "journey")!,
UIImage(named: "learn")!, UIImage(named: "settings")!]
titleArray += ["Budget", "Journey", "Learn", "Settings"]
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 4
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as UICollectionViewCell
// Set cell properties
cell.backgroundColor = colorArray[indexPath.row]
let imageview:UIImageView=UIImageView(image: pictureArray[indexPath.row])
let size = CGSize(width: 100, height: 100)
imageview.center = cell.center
imageview.bounds = CGRect(origin: cell.bounds.origin, size: size)
cell.contentView.addSubview(imageview)
let label = cell.viewWithTag(1) as! UILabel
label.text = titleArray[indexPath.row]
return cell
}
标签和颜色工作正常,但由于某种原因,图像视图似乎不在屏幕上。我有一种感觉,我的中心/边界限制正在迫使图像离开屏幕,但我尝试了很多组合,而且它们似乎都不适合我。
我该怎么做?
答案 0 :(得分:0)
我在这里发布谷歌的正确答案。 (因为它是在一小时前解决的,没有人发布答案)
最佳做法是继承UICollectionViewCell
,连接所有出口(标签,图像等)并在单元格上使用此类
祝所有人好运
答案 1 :(得分:0)
在Yogesh Suthar的评论之后,这是有用的:
我将UICollectionViewCell子类化,连接了图像和标签:
class NavigationCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var navImage: UIImageView!
@IBOutlet weak var navLabel: UILabel!
}
然后,在ViewController中,我这样做了:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! NavigationCollectionViewCell
// Set cell properties
cell.backgroundColor = colorArray[indexPath.row]
cell.navImage.image = imageArray[indexPath.row]
cell.navLabel.text = titleArray[indexPath.row]
return cell
}
在Main.storyboard中设置图像和标签的大小和位置!
答案 2 :(得分:0)
将所需的视图作为子类插入,并将所有约束设置为cell.heightAchor等。这将由于某种原因修复该错误。如果将子视图作为子视图而不是作为单元格的属性添加到单元格中,则可以正常工作