Alors, voici ce que je faisais. J'ai écrit une fonction qui étend Array pour partager mon tableau uniformément
extension Array {
func splitBy(subSize: Int) -> [[Element]] {
return 0.stride(to: self.count, by: subSize).map { startIndex in
let endIndex = startIndex.advancedBy(subSize, limit: self.count)
return Array(self[startIndex ..< endIndex])
}
}
}
Puis, je l'ai fait le bit d'afficher les images avec ce
private func setGridView(gridCell: ProfileGrid, indexPath: NSIndexPath) {//140813008
let (location, photoCount, images) = dummyGrid[indexPath.row]
gridCell.imageCount.text = photoCount
gridCell.location.text = location
if images.count > 0 && images.count <= 4 {
for index in 0..<images.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(index), y: 0, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: images[index])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
} else if images.count > 4 && images.count <= 8 {
let split = images.splitBy(4)
let firstSplit = split[0]
let secondSplit = split[1]
for index in 0..<firstSplit.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(index), y: 0, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: firstSplit[index])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
for jDex in 0..<secondSplit.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(jDex), y: 82, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: secondSplit[jDex])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
} else if images.count > 8 {
let split = images.splitBy(4)
let firstSplit = split[0]
let secondSplit = split[1]
let thirdSplit = split[2]
for index in 0..<firstSplit.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(index), y: 0, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: firstSplit[index])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
for jDex in 0..<secondSplit.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(jDex), y: 82, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: secondSplit[jDex])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
for tDex in 0..<thirdSplit.count {
let dedicatedWidth = self.view.frame.size.width/4 - 8
let imageView = UIImageView(frame: CGRect(x: (dedicatedWidth + 2) * CGFloat(tDex), y: 164, width: CGFloat(dedicatedWidth - 2), height: 80))
imageView.image = UIImage(named: thirdSplit[tDex])
imageView.layer.cornerRadius = 5
imageView.clipsToBounds = true
gridCell.imageHolder.addSubview(imageView)
}
}
}
Si vous avez un meilleur de le faire, ça ne me dérange pas. Mon code est trop grand et pas très professionnel de ma part. Idées s'il vous plaît
Il semble que vous voulez un 'UICollectionView'. Il existe de nombreux tutoriels sur le web. –
J'utilise déjà un UICollectionView dans la vue où cela est nécessaire. Donc, il y a quatre vues différentes que je change avec Tab Icons. Mais, alors une vue appartenant à un onglet a une collection avec en-tête. Donc, j'étais comme pourquoi utiliser un 'UICollectionView' dans un autre. Pourquoi ne pas simplement le dessiner –
S'il vous plaît regarder mon commentaire ci-dessous –