画面をタップする度にスクロールビュー上にラベルを表示したい。
発生している問題・エラーメッセージ
画面をタップする度にラベルが表示されるプログラムを組んだのですが、そのラベルをスクロールできるようにしたいです。 以下のコードでは最後に表示されたラベルだけがスクロールしてしまいます。 理想はラインのようなそれまでに表示されているラベル全てがスクロールされる感じです。 ご教授いただければ幸いです。よろしくお願いします
該当のソースコード
import UIKit let leibun = [(title: "てすと", items: ["あいあいあいあいああいあいあい", "うえうえうえうえうえうえうえうえうえうえうえうえうえうえうえうええうえうえ","えおえおえおえおえおえおえおえおえおえおええおえおえおえお","おあおあおあおあおあおあおあおあおあおあ","お","かかかかかかかかかかかかかかかかかかかかかかかかかかか","けけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけ",]), ] class ViewController: UIViewController, UIScrollViewDelegate { override func viewDidLoad() { super.viewDidLoad() } var i = 0 var j = 0 var textLabelsize = 0 var textLabelyPoint = 50 @IBAction func tapScreen(_ sender: Any) { let textLabel = UILabel() let backLabel = UILabel() let scrollView = UIScrollView() if i == leibun[j].items.count { return; }; //右側 if i%2 == 0 { textLabel.font = textLabel.font.withSize(18) textLabel.text = "(leibun[j].items[i])" textLabel.textColor = UIColor.black textLabel.sizeToFit() //設定値超えたらラベルを制御(仮) textLabelsize = Int(textLabel.frame.width) //print("突入前(labelsize)") if textLabelsize >= 300 { textLabel.numberOfLines = 0 textLabel.lineBreakMode = .byCharWrapping textLabel.frame.size.width = 300 textLabel.sizeToFit() } else { textLabel.sizeToFit() } //座標 textLabel.frame.origin.x = CGFloat(view.frame.origin.x + view.frame.size.width-textLabel.frame.width-30) textLabel.frame.origin.y = CGFloat(textLabelyPoint) textLabel.textAlignment = NSTextAlignment.left backLabel.backgroundColor = UIColor.yellow backLabel.clipsToBounds = true backLabel.layer.cornerRadius = 15 backLabel.layer.borderWidth = 1 backLabel.layer.borderColor = UIColor.black.cgColor backLabel.frame.size.width = textLabel.frame.size.width + 26 backLabel.frame.size.height = textLabel.frame.size.height + 14 backLabel.frame.origin.x = textLabel.frame.origin.x - 13 backLabel.frame.origin.y = textLabel.frame.origin.y - 7 self.view.addSubview(backLabel) self.view.addSubview(textLabel) //左側 }; if i%2 == 1 { textLabel.font = textLabel.font.withSize(18) textLabel.text = "(leibun[j].items[i])" textLabel.textColor = UIColor.white textLabel.sizeToFit() //設定値超えたらラベルを制御(仮) textLabelsize = Int(textLabel.frame.width) if textLabelsize >= 300 { textLabel.numberOfLines = 0 textLabel.lineBreakMode = .byCharWrapping textLabel.frame.size.width = 300 textLabel.sizeToFit() } else { textLabel.sizeToFit() } //座標 textLabel.frame.origin.x = CGFloat(30) textLabel.frame.origin.y = CGFloat(textLabelyPoint) textLabel.textAlignment = NSTextAlignment.left backLabel.backgroundColor = UIColor.gray backLabel.clipsToBounds = true backLabel.layer.cornerRadius = 15 backLabel.layer.borderWidth = 1 backLabel.layer.borderColor = UIColor.black.cgColor backLabel.frame.size.width = textLabel.frame.size.width + 26 backLabel.frame.size.height = textLabel.frame.size.height + 14 backLabel.frame.origin.x = textLabel.frame.origin.x - 13 backLabel.frame.origin.y = textLabel.frame.origin.y - 7 view.addSubview(backLabel) view.addSubview(textLabel) }; scrollView.frame = self.view.frame scrollView.contentSize = CGSize(width:0,height:1000) scrollView.delegate = self scrollView.addSubview(backLabel) scrollView.addSubview(textLabel) self.view.addSubview(scrollView) //ひとつのラベルが表示される度に i = i + 1 print(i) textLabelyPoint = Int(textLabel.frame.height) + Int(textLabel.frame.origin.y) + 30 } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/05 10:22