2017-09-26 79 views
0

我想在UIScrollView和pageViewController中显示一些图像,因为每个图像都有不同的信息,所以现在我能够做到这一点,但我想显示当我更改图片时,我的意思是当我将照片更改为另一张照片时,我想要显示其他照片和关于该照片的信息,我想要在代码中显示的信息是名为“labelList”的数组和我显示的图像命名为imageList。如何使用滚动视图和pageController显示图像和信息

class PremiosViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet var myImageView: UIImageView! 
    let imagelist = ["img_1", "img_2", "img_3"] 
    let labelList = ["label_1", "label_2", "label_3"] 

    var scrollView = UIScrollView() 

    var pageControl : UIPageControl = UIPageControl(frame:CGRect(x: 50, y: 250, width: 200, height: 50)) 

    var yPosition:CGFloat = 0 
    var scrollViewContentSize:CGFloat=0; 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     scrollView = UIScrollView(frame: CGRect(x: 0, y: 270, width: self.view.frame.width, height: 300)) 
     configurePageControl() 

     scrollView.delegate = self 
     self.view.addSubview(scrollView) 
     for i in stride(from: 0, to: imagelist.count, by: 1) { 
      var frame = CGRect.zero 
      frame.origin.x = self.scrollView.frame.size.width * CGFloat(i) 
      frame.origin.y = -100 
      frame.size = self.scrollView.frame.size 
      self.scrollView.isPagingEnabled = true 

      let myImage:UIImage = UIImage(named: imagelist[i])! 
      let myImageView:UIImageView = UIImageView() 
      myImageView.image = myImage 
      myImageView.contentMode = UIViewContentMode.scaleAspectFit 
      myImageView.frame = frame 

      scrollView.addSubview(myImageView) 
     } 

     self.scrollView.contentSize = CGSize(width: self.scrollView.frame.size.width * CGFloat(imagelist.count), height: self.scrollView.frame.size.height) 
     pageControl.addTarget(self, action: Selector(("changePage:")), for: UIControlEvents.valueChanged) 
     pageControl.addTarget(self, action: Selector(("changePage:")), for: UIControlEvents.valueChanged) 
     // Do any additional setup after loading the view. 
    } 
    func configurePageControl() { 
     // The total number of pages that are available is based on how many available colors we have. 
     self.pageControl.numberOfPages = imagelist.count 
     self.pageControl.currentPage = 0 
     self.pageControl.tintColor = UIColor.clear 
     self.pageControl.pageIndicatorTintColor = UIColor.clear 
     self.pageControl.currentPageIndicatorTintColor = UIColor.clear 
     self.view.addSubview(pageControl) 

    } 

    // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL 
    func changePage(sender: AnyObject) ->() { 
     let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width 
     scrollView.setContentOffset(CGPoint(x: x,y :0), animated: true) 
    } 

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 

     let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
     pageControl.currentPage = Int(pageNumber) 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func clickBackButton(_ sender: Any) { 

     self.dismiss(animated: true, completion: nil) 
    } 
} 
+0

类似于你一个UIImageView添加到滚动视图的方式,你能不能添加一个UILabel呢? –

+0

嗯,我试过,但我可以做到。 – delbertoms

回答

0

您可以使用UICollectionView显示内部UICllectionViewCell影像和信息水平滚动。

+0

是的,我认为,但在应用程序设计是不是这样,所以我不得不适应代码。 :( – delbertoms

1

如果想显示在短短的UILabel的信息,那么你可以做一个类似的方法,告诉你如何添加您的多个UIImageView,你可以在你的代码中添加UILabel以及

例如在这里你已经写:

let myImage:UIImage = UIImage(named: imagelist[i])! 
let myImageView:UIImageView = UIImageView() 
myImageView.image = myImage 
myImageView.contentMode = UIViewContentMode.scaleAspectFit 
myImageView.frame = frame 

// TODO: I added this here 

scrollView.addSubview(myImageView) 

我加了TODO评论那里只是为了告诉你,你可以通过执行添加UILabel也:

let myLabel = UILabel(); 
myLabel.text = labelList[i] 
myLabel.textAlignment = .center 
var labelFrame = CGRect(x: self.scrollView.frame.size.width * CGFloat(i), y: frame.size.height - 100, width: frame.size.width, height: 100) 
myLabel.frame = labelFrame 

和你的代码线以下scrollView.addSubview(myImageView)可以再加入你的UILabel还有:

scrollView.addSubview(myLabel) 
+0

谢谢你现在在工作,我申请你的例子,它的工作正常。再次感谢。 – delbertoms