Click the Image once to Zoom the Image and Fit it to the Screen in UICollectionView . Its the Simple procedure that we have to alter the size of the UIImage when it is Tapped.
You Just need to copy the code and paste it in your program.
You Just need to copy the code and paste it in your program.
//1 var largePhotoIndexPath : NSIndexPath? { didSet { //2 var indexPaths = [NSIndexPath]() if largePhotoIndexPath != nil { indexPaths.append(largePhotoIndexPath!) } if oldValue != nil { indexPaths.append(oldValue!) } //3 collectionView?.performBatchUpdates({ self.collectionView?.reloadItemsAtIndexPaths(indexPaths) return }){ completed in //4 if self.largePhotoIndexPath != nil { self.collectionView?.scrollToItemAtIndexPath( self.largePhotoIndexPath!, atScrollPosition: .CenteredVertically, animated: true) } } } }
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let Photo = photoForIndexPath(indexPath)
// New code
if indexPath == largePhotoIndexPath {
var size = collectionView.bounds.size
size.height -= topLayoutGuide.length
size.height -= (sectionInsets.top + sectionInsets.right)
size.width -= (sectionInsets.left + sectionInsets.right)
return Photo.sizeToFillWidthOfSize(size)
}
// Previous code
if var size = Photo.thumbnail?.size {
size.width += 10
size.height += 10
return size
}
return CGSize(width: 100, height: 100)
}
extension ViewController : UICollectionViewDelegate {
override func collectionView(collectionView: UICollectionView,
shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
if largePhotoIndexPath == indexPath {
largePhotoIndexPath = nil
}
else {
largePhotoIndexPath = indexPath
}
return false
}
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(
reuseIdentifier, forIndexPath: indexPath) as! yourCellName
let Photo = photoForIndexPath(indexPath)
//1
cell.activityIndicator.stopAnimating()
//2
if indexPath != largePhotoIndexPath {
cell.imageView.image = Photo.thumbnail
return cell
}
//3
if Photo.largeImage != nil {
cell.imageView.image = Photo.largeImage
return cell
}
//4
cell.imageView.image = Photo.thumbnail
cell.activityIndicator.startAnimating()
//5
Photo.loadLargeImage {
loadedPhoto, error in
//6
cell.activityIndicator.stopAnimating()
//7
if error != nil {
return
}
if loadedPhoto.largeImage == nil {
return
}
//8
if indexPath == self.largePhotoIndexPath {
if let cell = collectionView.cellForItemAtIndexPath(indexPath) as? yourCellName {
cell.imageView.image = loadedPhoto.largeImage
}
}
}
return cell
}
Here the Name "Photo" stands for the name of the UIImage and "yourCellName" stands for the name of the UICollectionViewCell.
Outputs:
Before Click After Click

No comments:
Post a Comment