2017-12-04 21 views
0

サイズが異なる10個のUILabelsがあり、3行に並べ替える必要があり、すべての行が先頭に並んでいます。親ビューのスペース、それは次の行に移動する必要があります。 UIStackviewを使ってどうすればいいですか?あなたはそのような何かをしようとすることができますUIStackViewを使用して動的ラベルを作成するにはどうすればいいですか

here's the image

+5

私は 'UICollectionView'を使用することをお勧めしますそれはそう簡単です。 – the4kman

+0

私は@ the4kmanに同意しています。おそらく 'UICollectionView'は、あなたが達成しようとしているものにもっと適しています。 –

+0

@ the4kmanありがとうございました – NabiMo

答えて

0

あなたのViewController

for item in array { 
     let someView = VPView(frame: CGRect(x: 0, y: 0, width: 70, height: 20)) 
     someView.translatesAutoresizingMaskIntoConstraints = false 
     stackView.addArrangedSubview(someView) 
    } 

のUIViewクラス:

class VPView: UIView { 

    let myLabel = UILabel() 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.addLabel() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    func addLabels() { 

     //Mark: - Styles 
     let labelH: CGFloat = 15 
     let labelW: CGFloat = 70 

     //MARK: - My Label 
     self.myLabel.frame = CGRect(x: 0, y: 0, width: labelW, height: labelH) 
     self.myLabel.backgroundColor = UIColor.blue 
     self.myLabel.textAlignment = NSTextAlignment.center 
     self.myLabel.numberOfLines = 0 
     self.addSubview(self.myLabel) 

     self.myLabel.translatesAutoresizingMaskIntoConstraints = false 
     self.myLabel.heightAnchor.constraint(equalToConstant: labelH).isActive = true 
     self.myLabel.widthAnchor.constraint(equalToConstant: labelW).isActive = true 
     self.myLabel.topAnchor.constraint(equalTo: self.topAnchor).isActive = true 
     self.myLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true 

    } 
} 
+0

ありがとうございます。しかし、このアプローチは、アイテムを次の行に移動するのに役立ちません。なぜなら、UIStackViewはそれらを1つの行に配置するだけだからです。 – NabiMo

+0

各行にUIStackViewを作成できますが、良いアプローチではないと思います。 UICollectionViewを使用してみてください。 – Vitaly

関連する問題