2017-08-18 2 views
1

Ich habe eine UIScrollView mit Paging aktiviert. Alles funktioniert gut, aber manchmal, wenn ich zum nächsten Bild scrolle, wird immer noch 1 Pixel vom letzten Bild angezeigt.UIScrollView mit Paging aktiviert Swipe-Problem

enter image description here

wie Sie auf der ganz links in der Abbildung zu sehen ist, gibt es 1 Pixel vertikale Linie, die, bevor sie aus dem Bild ist. Das bedeutet, dass das Bild nicht vollständig kopiert wurde.

Ich habe viel versucht, konnte aber das Problem nicht finden.

Hier ist mein Code:

import Foundation 
import UIKit 
import SwiftyGif 

class MBSPagingScrollView: UIScrollView, UIScrollViewDelegate { 

var scrollView = UIScrollView() 
var pageControl = UIPageControl() 
var imagesArray = [String]() 

override init (frame : CGRect) { 
    super.init(frame : frame) 
} 

convenience init() { 
    self.init(frame:CGRect.zero) 
} 

required init(coder aDecoder: NSCoder) { 
    fatalError("This class does not support NSCoding") 
} 

init(frame : CGRect, imagesarray : [String]){ 
    super.init(frame : frame) 

    imagesArray = imagesarray 

    scrollView.delegate = self 
    scrollView.isPagingEnabled = true 
    scrollView.frame = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height) 
    scrollView.showsHorizontalScrollIndicator = false 
    self.addSubview(scrollView) 

    pageControl.frame = CGRect(x: 0, y: self.frame.size.height - 50, width: self.frame.size.width, height: 50) 
    pageControl.numberOfPages = imagesArray.count 
    pageControl.currentPage = 0 
    pageControl.tintColor = UIColor.red 
    pageControl.pageIndicatorTintColor = UIColor.black 
    pageControl.currentPageIndicatorTintColor = MainOrangeColor 
    self.addSubview(pageControl) 

    scrollView.contentSize = CGSize(width:scrollView.frame.size.width * CGFloat(imagesArray.count),height: scrollView.frame.size.height) 
    pageControl.addTarget(self, action: #selector(changePage(sender:)), for: UIControlEvents.valueChanged) 

    for (index, imageName) in imagesArray.enumerated() { 

     var imageView = UIImageView() 

     if imageName.hasSuffix(".gif") { 
      let gifManager = SwiftyGifManager(memoryLimit:30) 
      let gif = UIImage(gifName: imageName) 
      imageView = UIImageView(gifImage: gif, manager: gifManager) 
     } 

     else { 
      imageView = UIImageView(image: UIImage(named: imageName)) 
      imageView.contentMode = UIViewContentMode.scaleToFill 
     } 

     imageView.frame = CGRect(x: CGFloat(index) * self.frame.size.width, y: 0, width: self.frame.size.width, height: self.frame.size.height) 
     scrollView.addSubview(imageView) 
    } 

} 

func changePage(sender: AnyObject) ->() { 
    let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width 
    scrollView.setContentOffset(CGPoint(x:x, y:0), animated: true) 
} 

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
    let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
    pageControl.currentPage = Int(pageNumber) 
} 

} 

Jede Hilfe sehr geschätzt wird. Vielen Dank!

Antwort

0

Versuchen Sie, clipsToBounds = true für alle Bildansichten festzulegen.

+0

Hallo, ich habe versucht, aber leider ist es immer noch das Gleiche –

Verwandte Themen