2016-07-25 2 views
0

Я добавил UIScrollView, в котором добавлен UIStackView в раскадровке. Я пытаюсь добавить UIStackView с двумя динамическими UILabels в родительском UIStackView. Хотя я даю высоту детского представления, он занимает все пространство родительского UIStackView, как я могу решить этот или любой другой способ достичь этого?UIStackView внутри UIScrollview

Мой код

func createSummaryView() 
{ 
    let labelSummary:UILabel = UILabel(frame: CGRectZero) 
    labelSummary.text = "Summary" 
    labelSummary.heightAnchor.constraintEqualToConstant(30).active = true 


    let summaryparentView:UIStackView = UIStackView(frame: CGRectZero) 
    summaryparentView.axis = .Vertical 
    summaryparentView.alignment = .Leading 
    summaryparentView.spacing = 1 
    let summaryViewWidth = width!-50 
    summaryparentView.heightAnchor.constraintEqualToConstant(180).active = true 
    //summaryparentView.heightAnchor.constraintEqualToAnchor(summaryparentView.heightAnchor, multiplier: 2).active = true 
    summaryparentView.addArrangedSubview(labelSummary) 

    for _ in 1...5 
    { 
     let viewParent:UIStackView = UIStackView(frame: CGRectZero) 
     viewParent.axis = .Horizontal 
     viewParent.widthAnchor.constraintEqualToConstant(summaryViewWidth).active = true 
     viewParent.heightAnchor.constraintEqualToConstant(30).active = true 
     viewParent.distribution = .FillEqually 

     let labelTitle:UILabel = UILabel() 
     let labelValue:UILabel = UILabel() 
     print("summary view width \(summaryViewWidth)") 

     labelTitle.text = "BUILD" 
     labelValue.text = "2012" 
     viewParent.addArrangedSubview(labelTitle) 
     viewParent.addArrangedSubview(labelValue) 

     summaryparentView.addArrangedSubview(viewParent) 
     summaryparentView.translatesAutoresizingMaskIntoConstraints = false 
    } 

    stackViewVertical.layoutMarginsRelativeArrangement = true 
    stackViewVertical.addArrangedSubview(summaryparentView) 
    stackViewVertical.translatesAutoresizingMaskIntoConstraints = false 
} 

где ширина width = stackViewVertical.frame.size.width

+0

Рассматривали ли вы UICollectionView с Collection View Flow Layout? Простота настройки в раскадровке. –

ответ

0

Может быть, эта библиотека может помочь вам: https://github.com/gurhub/ScrollableStackView

Это Objective-C и Swift совместимы.

Пример кода (Swift)

import ScrollableStackView 

var scrollable = ScrollableStackView(frame: view.frame) 
view.addSubview(scrollable) 

// add your views with 
let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 55)) 
rectangle.backgroundColor = UIColor.blue 
scrollable.stackView.addArrangedSubview(rectangle) 
// ... 

Пример кода (Objective-C)

@import ScrollableStackView 

ScrollableStackView *scrollable = [[ScrollableStackView alloc] initWithFrame:self.view.frame]; 
scrollable.stackView.distribution = UIStackViewDistributionFillProportionally; 
scrollable.stackView.alignment = UIStackViewAlignmentCenter; 
scrollable.stackView.axis = UILayoutConstraintAxisVertical; 
[self.view addSubview:scrollable]; 

UIView *rectangle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 55)]; 
[rectangle setBackgroundColor:[UIColor blueColor]]; 

// add your views with 
[scrollable.stackView addArrangedSubview:rectangle]; 
// ...