2016-09-18 22 views
0

私は画像付きのScrollViewを持っています。 Xcode8/Swift 3への移行以降、画像はScrollViewのサイズに適合しなくなりました。画像内では、スクロールして完全に一致するように完全に適応されたXcode 7/2のスウィフトイメージで元のサイズを保持します。以下は、対応するコードです:ScrollViewの画像サイズ

import UIKit 

class GoaLawahViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet weak var menuButton: UIBarButtonItem! 

    @IBOutlet weak var ScrollView: UIScrollView! 

    @IBOutlet weak var PageControl: UIPageControl! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     let ScrollViewWidth:CGFloat = self.ScrollView.frame.width 
     let scrollViewHeight:CGFloat = self.ScrollView.frame.height 


     let imgOne = UIImageView(frame: CGRect(x: 0, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
     imgOne.image = UIImage(named: "GoaLawah04.jpg") 
     let imgTwo = UIImageView(frame: CGRect(x: ScrollViewWidth, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
     imgTwo.image = UIImage(named: "GoaLawah07.jpg") 
     let imgThree = UIImageView(frame: CGRect(x: ScrollViewWidth*2, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
     imgThree.image = UIImage(named: "GoaLawah09.jpg") 


     self.ScrollView.addSubview(imgOne) 
     self.ScrollView.addSubview(imgTwo) 
     self.ScrollView.addSubview(imgThree) 


     self.ScrollView.contentSize = CGSize(width: self.ScrollView.frame.width * 3, height: 1.0) 
     self.ScrollView.delegate = self 
     self.PageControl.currentPage = 0 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView){ 
     // Test the offset and calculate the current page after scrolling ends 
     let pageWidth:CGFloat = scrollView.frame.width 
     let currentPage:CGFloat = floor((scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1 
     // Change the indicator 
     self.PageControl.currentPage = Int(currentPage); 


    } 
} 

答えて

0

はcontainerView(ちょうど新しい空白のUIView)にごimageViewsを追加しようとし、接続あなたのscrollView

+0

があなたの背中をありがとう、UIScrollViewDelegateをのUIViewController:それに対して理解していないで、私はそれが適切

import UIKit 

クラスPandangBaiViewControllerを機能させるための私の位置の制約を取り除くことを余儀なくされたということです実際にはこれは良い解決策ですが、このソリューションでは、スクロールするとページングがうまく動作しません。スクロールページングのいずれかがあっても、前の画像の終わりが次の画像の始まりです。 – SWOON

+0

どのような結果が予想されますかng?私はあなたのポイントを得るか分からない。 –

+0

こんにちは、実際に私のコードによると、私は画像を持つScrollViewを持っています。しかし、シミュレーションでは、画像は寸法スクロールに適合しません。スクロールすると元の画像の幅を横切って移動しますが、適応しません。 xcode 2 7の前にスクロールして、スクロールして問題なくiamgeイメージを使いました。 – SWOON

0

にcontainerViewを追加すると、私の新しいコードされ、それが動作します。 {

@IBOutlet weak var PageControl: UIPageControl! 
@IBOutlet weak var ScrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let ScrollViewWidth:CGFloat = self.ScrollView.frame.width 
    let scrollViewHeight:CGFloat = self.ScrollView.frame.height 


    let imgOne = UIImageView(frame: CGRect(x: 0, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
    imgOne.image = UIImage(named: "1PadangBay.jpg") 
    imgOne.contentMode = UIViewContentMode.scaleAspectFit 
    self.ScrollView.addSubview(imgOne) 


    let imgTwo = UIImageView(frame: CGRect(x: ScrollViewWidth, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
    imgTwo.image = UIImage(named: "2PadangBay.jpg") 
    imgTwo.contentMode = UIViewContentMode.scaleAspectFit 
    self.ScrollView.addSubview(imgTwo) 


    let imgThree = UIImageView(frame: CGRect(x: ScrollViewWidth*2, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
    imgThree.image = UIImage(named: "PadangBaiinternet1.jpg") 
    imgThree.contentMode = UIViewContentMode.scaleAspectFit 
    self.ScrollView.addSubview(imgThree) 


    let imgFour = UIImageView(frame: CGRect(x: ScrollViewWidth*3, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
    imgFour.image = UIImage(named: "PadangBaiinternet2.jpg") 
    imgFour.contentMode = UIViewContentMode.scaleAspectFit 
    self.ScrollView.addSubview(imgFour) 



    let imgFive = UIImageView(frame: CGRect(x: ScrollViewWidth*4, y: 0,width: ScrollViewWidth, height: scrollViewHeight)) 
    imgFive.image = UIImage(named: "PadangBaiinternet3.jpg") 
    imgFive.contentMode = UIViewContentMode.scaleAspectFit 
    self.ScrollView.addSubview(imgFive) 



    self.ScrollView.contentSize = CGSize(width: ScrollViewWidth * 5, height: scrollViewHeight) 
    self.ScrollView.isPagingEnabled = true 
    self.PageControl.currentPage = 0 


} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView){ 
    // Test the offset and calculate the current page after scrolling ends 
    let pageWidth:CGFloat = scrollView.frame.width 
    let currentPage:CGFloat = floor((scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1 
    // Change the indicator 
    self.PageControl.currentPage = Int(currentPage); 

} 

}