2016-08-03 34 views
0

我想用stackviews創建一個電子表格樣式表。但是,正如您在圖像中看到的那樣,由於之前的項目更寬,列不會對齊。我如何確保他們對齊?嵌套的UIStackViews不對齊。我如何對齊它們?

enter image description here

這是我如何創建堆棧:

class MyTableFullScreenViewController: UIViewController { 

    var json: JSON? 

    @IBOutlet weak var scrollView: UIScrollView! 
    @IBOutlet weak var verticalStack: UIStackView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for i in 0..<json!["Rows"].arrayValue.count{ 

      let horizontalStack = UIStackView() 
      horizontalStack.axis = .Horizontal 
      horizontalStack.spacing = 16 
      horizontalStack.distribution = .Fill 


      for j in 0..<json!["Rows"][i]["Column"].arrayValue.count{ 
       let innerJson = json!["Rows"][i]["Column"][j] 
       switch innerJson["InputType"].intValue{ 
       case 1: 
        Inputs.Input1(innerJson, parent: horizontalStack, isRepeatable: true) 
       case 11: 
        Inputs.Input11(innerJson, parent: horizontalStack, isRepeatable: true) 
       case 15: 
        Inputs.Input15(innerJson, parent: horizontalStack, isRepeatable: true) 
       default: 
        break 
       } 
      } 

      verticalStack.addArrangedSubview(horizontalStack) 

     } 

    } 


} 

這是故事板是如何做的: enter image description here

+0

你是否檢查過這裏的工作分配'.FillEqually'(或類似的東西)? – eMKa

+0

外部堆棧是.Fill,內部堆棧是.FillEqually。 –

+1

工作錯誤的工具。嘗試使用自定義佈局的集合視圖。 – Avi

回答

0

您應該使用一個UICollectionView,而不是UIStackView這個.. 。將UIStackView看作AutoLayout的包裝,簡化了在預定義空間內對視圖集合的佈局而不是可滾動的容器,它能夠處理幾乎無限數量的視圖的佈局。

如果您要創建電子表格,您可能希望能夠水平和垂直滾動,但只能根據您發佈的示例代碼進行垂直滾動(除非您'破解'UIStackView但是在那時你可能會使用UICollectionView)。

我推薦的是在每個單元格中創建一個包含水平滾動UICollectionView的UITableView。或者,根據您的需要,還可以將UICollectionView嵌套在垂直滾動的UICollectionView中。在其他UICollectionViews/UITableViews中包含UICollectionViews/UITableViews實際上是非常高性能的,並且經常在您描述的場景中使用。