

UIViewにUILabelを複数個追加し、そのUILabelの個数に応じてUIViewの大きさを変え、さらにUIScrollViewに乗せ、ScrollViewをUIViewの大きさに応じて変えたいです。  
また、UILabelの個数が30個を超えた場合は31個目以降を2つ目のUIViewに貼り付けし、  
ボタンを押すことでページが切り替わるような仕様にしたいです。

UIViewとUIScrollViewの長さを自動で変える方法に「sizeToFit()」があることはわかるのですが、  
今のコードでは可変になりません。  
どう書けば良いでしょうか？

よろしくお願い致します。

[code]

        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.view.backgroundColor = UIColor.white
    
            self.navigationController?.setNavigationBarHidden(true, animated: false)
    
            var tokyoCount = 0
            var tokyoArray = [0]
    
            // CSV読み込み
            if let csvPath = Bundle.main.path(forResource: "mise", ofType: "csv") {
                do {
                    var csvString =  try NSString(contentsOfFile: csvPath, encoding: String.Encoding.utf8.rawValue) as String
                    csvString = csvString.replacingOccurrences(of: "\r\n", with: "")
                    let array2:Array = csvString.components(separatedBy: ",")
    
                    var items2 = [String]()
                    array2.enumerated().forEach { (index, value) in
    
                        items2.append(value)
    
                        if value.range(of:string) != nil{
                            print("exists")
    
                            tokyoArray.append(tokyoCount)
                        }
    
                        if (index + 1) % 6 == 0 {
    
                            str2.append(items2)
                            items2 = [String]()
    
                            tokyoCount += 1
    
                        }
    
                    }
                } catch {
                    // エラー
                }
            }
    
    
            // ScrollViewを生成.
            myScrollView = UIScrollView()
            myScrollView.frame = CGRect(x: 10, y: 50, width: 300, height: self.view.frame.size.height)
            let myImageView = UIImageView()
            myImageView.frame = myScrollView.frame
            myImageView.contentMode = UIViewContentMode.scaleAspectFill
            myScrollView.addSubview(myImageView)
            myScrollView.backgroundColor = UIColor.gray
            myScrollView.alpha = 0.3
    
            // Labelを作成.
            let label: UILabel = UILabel(frame: CGRect(x: 20, y: 10, width: 200, height: 30))
            label.backgroundColor = UIColor.white
            label.layer.masksToBounds = true
            label.textColor = UIColor.black
            label.text = "店舗一覧"
            label.textAlignment = NSTextAlignment.center
            self.view.addSubview(label)
    
            let v:UIView = UIView(frame: CGRect(x: 10, y: 0, width: 300, height: 50))
            v.backgroundColor = UIColor(red: 0.5, green: 1.0, blue: 0.3, alpha: 1.0);
    
            for var i in 1...tokyoArray.count-1{
    
                //店名
                let nameLabel: UILabel = UILabel(frame: CGRect(x: 20, y: 10+(i*100), width: 250, height: 50))
                nameLabel.backgroundColor = UIColor.white
                nameLabel.numberOfLines = 0
                nameLabel.textColor = UIColor.black
                nameLabel.tag = i
                nameLabel.text = str2[tokyoArray[i]][0]
                nameLabel.textAlignment = NSTextAlignment.left
                myScrollView.addSubview(nameLabel)
    
                //住所
                let addressLabel: UILabel = UILabel(frame: CGRect(x: 20, y: 50+(i*100), width: 250, height: 50))
                addressLabel.backgroundColor = UIColor.white
                addressLabel.numberOfLines = 0
                addressLabel.textColor = UIColor.black
                addressLabel.tag = i
                addressLabel.text = str2[tokyoArray[i]][1]
                addressLabel.textAlignment = NSTextAlignment.left
                myScrollView.addSubview(addressLabel)
    
    
            }
    
            v.sizeToFit()
            myScrollView.sizeToFit()
            myScrollView.contentSize = CGSize(width:300, height:myScrollView.frame.size.height)
            self.view.addSubview(myScrollView)
    
       }
    
[/code]


CC BY-SA 4.0
2016-10-30T10:26:26.597
29995
2019-06-08T00:18:12.773
2019-06-08T00:18:12.773
32986
12886
question
swift ios xcode iphone
UILabelの数に応じてUIView、UIScrollViewの長さを変更する方法は？