带图像数组的页面控件

时间:2016-09-21 00:11:27

标签: ios swift xcode uipagecontrol

我正在尝试将页面控件与图像数组相关联。我只是在初始图像中更改背景颜色和加载时设置正确,但是当我滚动时没有显示任何内容。这是我的代码:

var images: [UIImage] = [
    UIImage(named: "slide1.png")!,
    UIImage(named: "loginButton.png")!,
    UIImage(named: "slide1.png")!,
    UIImage(named: "slide1.png")!
]

func setPageViewinScroll() {

    for index in 0..<4 {

        frame.origin.x = self.scrollView.frame.size.width * CGFloat(index)
        frame.size = self.scrollView.frame.size
        self.scrollView.pagingEnabled = true
        self.imageView.image = images[index]
        let subview = UIView(frame: frame)
        self.scrollView.addSubview(subview)
    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 4, self.scrollView.frame.size.height)

    pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged)



}

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

有谁知道我在哪里出错?

2 个答案:

答案 0 :(得分:0)

如何将UIImageview添加到UIScrollview而不是UIView,就像这段代码一样?

var imageOne:UIImageView!
var imageTwo:UIImageView!
var imageThree:UIImageView!
var imageFour:UIImageView!

func functionCalledFromViewDidLoad() {

    scrollView.frame = CGRectMake(0, 0, self.view.frame.width,self.view.frame.height)

    let scrollViewWidth = scrollView.frame.width
    let scrollViewHeight = scrollView.frame.height

    imageOne = UIImageView(frame: CGRectMake(0, 0,scrollViewWidth, scrollViewHeight))
    imageTwo = UIImageView(frame: CGRectMake(scrollViewWidth*1, 0,scrollViewWidth, scrollViewHeight))
    imageThree = UIImageView(frame: CGRectMake(scrollViewWidth*2, 0,scrollViewWidth, scrollViewHeight))
    imageFour = UIImageView(frame: CGRectMake(scrollViewWidth*3, 0,scrollViewWidth, scrollViewHeight))

    scrollView.addSubview(imageOne)
    scrollView.addSubview(imageTwo)
    scrollView.addSubview(imageThree)
    scrollView.addSubview(imageFour)

}

override func viewDidLayoutSubviews() {


    scrollView.contentSize = CGSizeMake(scrollView.frame.width * 4, scrollView.frame.height)
    imageOne.frame.size.height = scrollView.frame.height
    imageTwo.frame.size.height = scrollView.frame.height
    imageThree.frame.size.height = scrollView.frame.height
    imageFour.frame.size.height = scrollView.frame.height
}

您似乎还需要添加此代码。

 func scrollViewDidEndDecelerating(scrollView: UIScrollView) {

    // Test the offset and calculate the current page after scrolling ends
    let pageWidth:CGFloat = CGRectGetWidth(scrollView.frame)

    let currentPage = Int(floor((scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1)

     // Change the page indicator
     self.pageControl.currentPage = Int(currentPage)
 }

有一个与此主题相关的非常好的教程here

答案 1 :(得分:0)

您正在imageView上设置图像而不是在子视图上设置图像。 I.o.w.您要将子视图添加到每个页面,但不在其上设置图像。

将子视图代码更改为以下

let subview = UIImageView(frame: frame)
subview.image = images[index]
self.scrollView.addSubview(subview)