【问题标题】:Page control with image array带有图像数组的页面控件
【发布时间】:2016-09-21 00:11:27
【问题描述】:

我正在尝试制作与图像数组关联的页面控件。我只更改了背景颜色并加载到初始图像中就正确设置了它,但是当我滚动时没有进一步显示。这是我的代码:

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

有人知道我哪里出错了吗?

【问题讨论】:

    标签: ios swift xcode uipagecontrol


    【解决方案1】:

    如何将你的 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

    【讨论】:

      【解决方案2】:

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

      将子视图代码改为如下

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

      【讨论】:

        猜你喜欢
        • 2018-12-28
        • 2021-06-08
        • 1970-01-01
        • 2017-05-05
        • 1970-01-01
        • 2013-09-23
        • 2012-04-15
        • 2012-08-13
        • 2012-09-07
        相关资源
        最近更新 更多