2017-08-18 4 views
1

ページングが有効なUIScrollViewがあります。すべて正常に動作しますが、次の画像にスクロールすると、最後の画像から1ピクセルも表示されます。ページングが有効なスワイプの問題を伴うUIScrollView

enter image description here

あなたが画像の非常に左側に見ることができるように、前の画像からである1ピクセル垂直線があります。イメージが完全にスワイプされなかったことを意味します。

私は多くを試みましたが、問題を見つけることができませんでした。すべてのヘルプははるかに高く評価されて

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) 
} 

} 

は、ここに私のコードです。 ありがとう!

答えて

0

すべての画像ビューでclipsToBounds = trueを試して設定してください。

+0

こんにちは、私は試みましたが、残念ながらそれはまだ同じです –

関連する問題