初歩的な内容で恐縮ですが、自力では前に進めなくなってしまい、質問させて頂きます。
前提・実現したいこと
swiftで同じ画面上に2つのscrollViewを配置して、片方をスクロールした時、もう片方も同じx座標まで連動させたいです。
func scrollViewDidScroll()を使って途中まで出来たのですが、双方向に連動させることが出来ない状態です。
青scrollViewを動かす→黄scrollViewが連動する ◯
黄scrollViewを動かす→青scrollViewが連動する ×
という状態です。
これを
青scrollViewを動かす→黄scrollViewが連動する ◯
黄scrollViewを動かす→青scrollViewが連動する ◯
という状態にしたいです。
※ストーリーボードは使わず、全てコードで処理したいです。
該当のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController, UIScrollViewDelegate { 4 5 // 画面の横幅 6 let screenWidth:Double = Double(UIScreen.main.bounds.size.width) 7 // 画面の縦幅 8 let screenHeight:Double = Double(UIScreen.main.bounds.size.height) 9 10 let scroll = UIScrollView() 11 let scroll2 = UIScrollView() 12 13 let scrLabel = UILabel() 14 let scrLabel2 = UILabel() 15 16 override func viewDidLoad() { 17 super.viewDidLoad() 18 // Do any additional setup after loading the view, typically from a nib. 19 20 //scroll 21 scroll.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 100) 22 scroll.backgroundColor = UIColor.blue 23 scroll.contentSize = CGSize(width: screenWidth*2, height: 100) 24 scroll.delegate = self 25 self.view.addSubview(scroll) 26 27 //scroll2 28 scroll2.frame = CGRect(x: 0, y: 100, width: screenWidth, height: 100) 29 scroll2.backgroundColor = UIColor.yellow 30 scroll2.contentSize = CGSize(width: screenWidth*2, height: 100) 31 scroll2.delegate = self 32 self.view.addSubview(scroll2) 33 34 //scrLabel 35 scrLabel.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 100) 36 scrLabel.backgroundColor = UIColor.clear 37 scrLabel.text = "1234567890" 38 scrLabel.textColor = UIColor.black 39 self.scroll.addSubview(scrLabel) 40 41 //scrLabel2 42 scrLabel2.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 100) 43 scrLabel2.backgroundColor = UIColor.clear 44 scrLabel2.text = "abcdefghij" 45 scrLabel2.textColor = UIColor.black 46 self.scroll2.addSubview(scrLabel2) 47 48 } 49 50 //scrollViewの座標変更時の挙動 51 func scrollViewDidScroll(_ scroll: UIScrollView) { 52 print(scroll.contentOffset.x) 53 scroll2.contentOffset = CGPoint(x: scroll.contentOffset.x , y: 0) 54 } 55 56 override func didReceiveMemoryWarning() { 57 super.didReceiveMemoryWarning() 58 // Dispose of any resources that can be recreated. 59 } 60 61 62}
以上です。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/02 11:02 編集