2017-02-27 4 views
0

スクロールビューにサブビューを追加したい場合、スクロールビューにサブビューを追加するコードがあります。サブビューのジェスチャーを追加します。ビューの中心。どのようにこれを行うことができますか?あなたのコード例でスクロールビューを選択すると、サブビュー位置でスクロールします。

 var startpoint = UIScreen.main.bounds.width/4 
     var with = 150 
     var height = 55 
     var space = 15 

     override func viewDidLoad() { 
       super.viewDidLoad() 

       let max = 4 
      scrollView.delegate = self 
      let bound = self.view.bounds.width/4 

      for index in 0...max { 

       catView = CategoryView.init(frame: CGRect(x: (with + space) * index + Int(startpoint) , y: 0, width: with, height: height)) 

       let label1 = UILabel(frame: CGRect(x: 0, y: 0, width: 20, height: 20)) 
       catView.backgroundColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1) 
       label1.text = String(index) 
       label1.textColor = #colorLiteral(red: 0.4745098054, green: 0.8392156959, blue: 0.9764705896, alpha: 1) 
       label1.textAlignment = .center 
       catView.addSubview(label1) 

       catView.tag = index 

       self.allView.append(catView) 

       self.scrollView.addSubview(catView) 

    } 

      let tapGestureRecognizer = UITapGestureRecognizer(target:self, action: #selector(self.subviewTapped(recognizer:))) 
      scrollView.addGestureRecognizer(tapGestureRecognizer) 
      scrollView.isUserInteractionEnabled = true 

     self.scrollView.contentSize = CGSize(width:CGFloat(scrollView.subviews.count * 150) + CGFloat(bound) , height:self.scrollView.frame.height) 

      }  
    func subviewTapped(recognizer : UIGestureRecognizer) { 

     let tappedPoint: CGPoint = recognizer.location(in: self.scrollView!) 
     let x: CGFloat = tappedPoint.x 
     let y: CGFloat = tappedPoint.y 

     print(tappedPoint) 
     print(x) 
     print(y) 

     let index = Int(Int(x - startpoint)/with) 
     self.label.text = String(index) 
     var scrollRect = scrollView.subviews[index].frame 
     scrollRect.origin.x = self.view.center.x 
     let centerView = CGRect(x: Int(self.view.center.x), y: 0, width: 75, height: 55) 
     scrollView.scrollRectToVisible(centerView, animated: true) 
     scrollView.contentOffset = CGPoint(x: scrollRect.origin.x, y: 0) 
    } 
Yandex.taxiアプリケーションのような

enter image description here

+0

表示されているスクロールビューの中央に何がしたいですか? – dmorrow

+0

私はこのビューを追加するときにこれの上に別のスクロールビューを表示するには、私は画像サンプルを追加します。 – ava

+0

@dmorrow私のコードを編集していますが、私は魔法使いビューをスクロールビューで選択できましたが、今私はこのサブビュースクロールビューをタップしてスクロールし、選択したサブビューを中心視点に配置したいと思っています。 – ava

答えて

0

、あなたはあなたが唯一のscrollRectToVisibleを呼び出す必要がありますする必要があり、両方の

scrollView.scrollRectToVisible(centerView, animated: true) 
scrollView.contentOffset = CGPoint(x: scrollRect.origin.x, y: 0) 

を設定しています。しかし、centerViewの矩形にyの値を0以外に指定したい場合があります。

関連する問題