marinofaggiana 6 years ago
parent
commit
78d3f5bcf6
2 changed files with 52 additions and 7 deletions
  1. 45 0
      iOSClient/Main/Layout/NCLayout.swift
  2. 7 7
      iOSClient/Media/NCMedia.swift

+ 45 - 0
iOSClient/Main/Layout/NCLayout.swift

@@ -108,3 +108,48 @@ class NCGridLayout: UICollectionViewFlowLayout {
         return proposedContentOffset
     }
 }
+
+class NCGridMediaLayout: UICollectionViewFlowLayout {
+    
+    var preferenceWidth: CGFloat = 110
+    var marginLeftRight: CGFloat = 1
+    var numItems: Int = 0
+    
+    override init() {
+        super.init()
+        
+        sectionHeadersPinToVisibleBounds = false
+        
+        minimumInteritemSpacing = 1
+        minimumLineSpacing = 1
+        
+        self.scrollDirection = .vertical
+        self.sectionInset = UIEdgeInsets(top: 0, left: marginLeftRight, bottom: 0, right:  marginLeftRight)
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    override var itemSize: CGSize {
+        get {
+            if let collectionView = collectionView {
+                
+                self.numItems = Int(collectionView.frame.width / preferenceWidth)
+                let itemWidth: CGFloat = (collectionView.frame.width - (marginLeftRight * 2) - CGFloat(numItems)) / CGFloat(numItems)
+                let itemHeight: CGFloat = itemWidth
+                return CGSize(width: itemWidth, height: itemHeight)
+            }
+            
+            // Default fallback
+            return CGSize(width: 100, height: 100)
+        }
+        set {
+            super.itemSize = newValue
+        }
+    }
+    
+    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
+        return proposedContentOffset
+    }
+}

+ 7 - 7
iOSClient/Media/NCMedia.swift

@@ -46,14 +46,14 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
     private var autoUploadFileName = ""
     private var autoUploadDirectory = ""
     
-    private var gridLayout: NCGridLayout!
+    private var gridLayout: NCGridMediaLayout!
     
     private var actionSheet: ActionSheet?
     
     private let sectionHeaderHeight: CGFloat = 20
     private let footerHeight: CGFloat = 50
     
-    private var addWidth: CGFloat = 10
+    private var stepImageWidth: CGFloat = 10
     
     private var readRetry = 0
     private var isDistantPast = false
@@ -81,7 +81,7 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         
         collectionView.alwaysBounceVertical = true
 
-        gridLayout = NCGridLayout()
+        gridLayout = NCGridMediaLayout()
         gridLayout.preferenceWidth = 80
         gridLayout.sectionInset = UIEdgeInsets(top: 10, left: 1, bottom: 10, right: 1)
         gridLayout.sectionHeadersPinToVisibleBounds = true
@@ -171,14 +171,14 @@ class NCMedia: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         
         UIView.animate(withDuration: 0.0, animations: {
             
-            if self.gridLayout.numItems == 1 && self.addWidth > 0 {
-                self.addWidth = -10
+            if self.gridLayout.numItems == 1 && self.stepImageWidth > 0 {
+                self.stepImageWidth = -10
             } else if itemSizeStart.width < 50 {
-                self.addWidth = 10
+                self.stepImageWidth = 10
             }
             
             repeat {
-                self.gridLayout.preferenceWidth = self.gridLayout.preferenceWidth + self.addWidth
+                self.gridLayout.preferenceWidth = self.gridLayout.preferenceWidth + self.stepImageWidth
             } while (self.gridLayout.itemSize == itemSizeStart)
             
             self.collectionView.collectionViewLayout.invalidateLayout()