         var itemHeight: CGFloat = 0
         for item in items {
             if item.isHidden == true { continue }
-            itemHeight += item.size + itemSpace
+            if verticalDirection == .up {
+                itemHeight += item.size + itemSpace
+            } else {
+                itemHeight -= item.size + itemSpace
+            }
             group.enter()
             UIView.animate(withDuration: 0.2, delay: 0, options: [], animations: { () -> Void in
                                         item.frame.origin.y = -itemHeight

        var itemHeight: CGFloat = 0
        for item in items {
            if item.isHidden == true { continue }
            itemHeight += item.size + itemSpace
            item.frame.origin.y = -itemHeight
            item.alpha = 1
        }

        for item in items {
            if item.isHidden == true { continue }
            itemHeight += item.size + itemSpace
            if verticalDirection == .up {
                item.frame.origin.y = -itemHeight
            } else {
                item.frame.origin.y = itemHeight
            }
            group.enter()
            UIView.animate(withDuration: 0.4,
                                       delay: delay,
