         super.init(coder: aDecoder)
         setupSubview()
     }
-    public override func willMove(toSuperview newSuperview: UIView?) {
+    override open func willMove(toSuperview newSuperview: UIView?) {
         if newSuperview == nil {
             self.invalidateTimer()
         }

    }()
}
// MARK: - UICollectionViewDataSource & UICollectionViewDelegate
public extension MYCycleScrollView{
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
        return self.totalItemsCount
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: kCellReuseIdentifier, for: indexPath) as! MYCollectionViewCell
        let index = indexPath.item % self.imageURLs.count
        cell.imageView.kf.setImage(with: URL(string: self.imageURLs[index]), placeholder:self.placehoder, options: [.transition(self.imageTransition)])

        collectionView.delegate = nil
        collectionView.dataSource = nil
    }
    override open func layoutSubviews() {
        super.layoutSubviews()
        
        flowLayout.itemSize = self.frame.size
