質問失礼します。
コードのみでScrollViewを実装したいです。
画面内の一部のみScrollViewを使用して長文をスクロールしたいと思い、
下記の様にコードを記載したのですが、スクロールする事が出来ませんでした。
実数値でScrollViewのcontentSizeを記載するとスクロール出来た為、
contentSizeを設定する際にLabelの高さを取得出来ていないのが原因かと思うのですが、
LabelのwidthをScrollViewのwidthに合わせ、
contentSizeのheightはLabelのheightに合わせたい場合は、
どの様に記載すれば良いのでしょうか。
どなたかご教授いただけると嬉しいです。
よろしくお願い致します。
Swift
1 2 3import UIKit 4 5class ViewController: UIViewController { 6 7 //ベースビュー 8 lazy var baseView: UIView = { 9 let view = UIView() 10 view.backgroundColor = .systemPink 11 view.translatesAutoresizingMaskIntoConstraints = false 12 return view 13 }() 14 15 //スクロールビュー 16 var scrollView: UIScrollView = { 17 let view = UIScrollView() 18 view.backgroundColor = .clear 19 view.translatesAutoresizingMaskIntoConstraints = false 20 return view 21 }() 22 23 var scrollLabel :UILabel = { 24 let label = UILabel() 25 label.textColor = .black 26 label.font = UIFont.boldSystemFont(ofSize: 10) 27 label.translatesAutoresizingMaskIntoConstraints = false 28 label.textAlignment = .left 29 //長文のテキストを設定し、その長さにラベルのサイズを合わせる 30 label.text = ScrollText.scrollText 31 label.numberOfLines = 0 32 label.sizeToFit() 33 return label 34 }() 35 36 37 override func viewDidLoad() { 38 super.viewDidLoad() 39 //スクリーンサイズの取得 40 let screenSize = self.view.frame.size 41 42 //baseViewの追加とレイアウト 43 view.addSubview(baseView) 44 45 baseView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true 46 baseView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true 47 baseView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true 48 baseView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true 49 50 //scrollLabelの追加とレイアウト 51 scrollView.addSubview(scrollLabel) 52 //Labelの横幅をscrollViewの横幅に合わせる 53 scrollLabel.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true 54 55 //scrollLabelのheightが読み込まれず、スクロールが出来ない(実数値でheightを指定するとスクロールが可能) 56 scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: scrollLabel.frame.size.height) 57 58 //scrollViewの追加 59 baseView.addSubview(scrollView) 60 //上下左右にスペースを作り、ベースビューの一部のみスクロールする様にレイアウトする 61 scrollView.leadingAnchor.constraint(equalTo: baseView.leadingAnchor, constant: (screenSize.width / 8)).isActive = true 62 scrollView.topAnchor.constraint(equalTo: baseView.topAnchor, constant: (screenSize.height / 6)).isActive = true 63 scrollView.bottomAnchor.constraint(equalTo: baseView.bottomAnchor, constant: -(screenSize.height / 6)).isActive = true 64 scrollView.trailingAnchor.constraint(equalTo: baseView.trailingAnchor, constant: -(screenSize.width / 8)).isActive = true 65 } 66} 67
回答1件
あなたの回答
tips
プレビュー