2016-08-03 6 views
0

Я хочу создать таблицу стилей таблицы с представлениями стека. Однако, как вы можете видеть на изображении, столбцы не выравниваются из-за того, что предыдущие элементы были более широкими. Как сделать, чтобы они были выровнены?Вложенные UIStackView не выравниваются. Как выровнять их?

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).

Я бы рекомендовал создать UITableView, содержащий горизонтальное прокручивание UICollectionView в каждой ячейке. Кроме того, в зависимости от ваших потребностей вы также можете вложить UICollectionViews в вертикально прокручиваемое UICollectionView.

Содержит UICollectionViews/UITableViews в других UICollectionViews/UITableViews на самом деле очень результативно и часто используется в сценариях, подобных описанным вами.