ScrollView中的图像大小

时间:2016-09-18 06:55:27

标签: ios xcode uiscrollview scrollview swift3

我有一张带有图片的ScrollView。从转换到Xcode8 / Swift 3后,图像不再适合ScrollView的大小。在Xcode 7/2 swift图像中,图像内部保持原始尺寸,非常适合滚动和完美匹配。以下是相应的代码:

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


    }
}

2 个答案:

答案 0 :(得分:0)

尝试在containerView上添加你的imageViews(只是一个新的空白UIView),然后在你的scrollView上添加containerView

答案 1 :(得分: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);

}

}