代码之家  ›  专栏  ›  技术社区  ›  Dian

如何通过Swift中的页面控件将图像从ScrollView传递到NewViewController

  •  0
  • Dian  · 技术社区  · 7 年前

    class HomeViewController: UIViewController, UIScrollViewDelegate {
    
    @IBOutlet var pageControl: UIPageControl!
    @IBOutlet var topScrollView: UIScrollView!
    
     override func viewDidLoad() {
        super.viewDidLoad()
    
        pageScrollView()
    
       }
    
    func pageScrollView() {
    
        self.topScrollView.isUserInteractionEnabled = true
        self.topScrollView.addGestureRecognizer(UITapGestureRecognizer())
    
        self.topScrollView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200)
        let scrollViewWidth:CGFloat = self.topScrollView.frame.width
        let scrollViewHeight:CGFloat = self.topScrollView.frame.height
    
    
        let imgOne = UIImageView(frame: CGRect(x:0, y:0,width:scrollViewWidth, height:scrollViewHeight))
        imgOne.image = UIImage(named: "img1")        
        let imgTwo = UIImageView(frame: CGRect(x:scrollViewWidth, y:0,width:scrollViewWidth, height:scrollViewHeight))
        imgTwo.image = UIImage(named: "img2")
        let imgThree = UIImageView(frame: CGRect(x:scrollViewWidth*2, y:0,width:scrollViewWidth, height:scrollViewHeight))
        imgThree.image = UIImage(named: "img3")
        let imgFour = UIImageView(frame: CGRect(x:scrollViewWidth*3, y:0,width:scrollViewWidth, height:scrollViewHeight))
        imgFour.image = UIImage(named: "img4")
        let imgFive = UIImageView(frame: CGRect(x:scrollViewWidth*4, y:0,width:scrollViewWidth, height:scrollViewHeight))
        imgFive.image = UIImage(named: "img5")
    
    
        self.topScrollView.addSubview(imgOne)
        self.topScrollView.addSubview(imgTwo)
        self.topScrollView.addSubview(imgThree)
        self.topScrollView.addSubview(imgFour)
        self.topScrollView.addSubview(imgFive)
    
        self.topScrollView.contentSize = CGSize(width:self.topScrollView.frame.width * 5, height:self.topScrollView.frame.height)
        self.pageControl.currentPage = 0
    
      }
    
        func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    
        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)
    
    
       }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Dian    7 年前

    我想出来了。希望它能帮助别人。我补充道:

    @objc var imgOne = UIImageView()
    @objc var imgTwo = UIImageView()
    @objc var imgThree = UIImageView()
    @objc var imgFour = UIImageView()
    @objc var imgFive = UIImageView()
    
       @objc func imageTapped(_sender:UITapGestureRecognizer) {
    
         let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailsMapsViewController") as! DetailsMapsViewController
         vc.restaurantMaps = self.restaurantArray[_sender.view!.tag]
         self.navigationController?.pushViewController(vc, animated: true)
    }
    
        imgOne.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgTwo.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgThree.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgFour.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgFive.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
    
        imgOne.tag = 0
        imgTwo.tag = 1
        imgThree.tag = 2
        imgFour.tag = 3
        imgFive.tag = 4