2016-09-18 97 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

尝试添加您的imageViews上containerView(只是一个新的空白的UIView),然后添加containerView你的滚动视图

+0

谢谢您的回,实际上这是一个很好的解决方案,但是采用这种解决方案时,当我滚动时,分页效果不好,我看到的是前一张图片的结尾是下一张图片的开头,尽管要么滚动分页 – SWOON

+0

您希望得到什么样的结果恩?我不确定我是否明白你的观点。 –

+0

你好,其实根据我的代码我有ScrollView与图像。但在模拟图像不适合尺寸滚动。当我滚动时,我移动原始图像的宽度不适应。之前xcode 2 7 swift他们正在适应完美的滚动和花费的图像没有问题 – SWOON

0

附件是我新的代码和它的作品。针对通过不明白的是,我不得不删除我的位置约束它才能正常

import UIKit 

类PandangBaiViewController:UIViewController中,UIScrollViewDelegate {

@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); 

} 

}