如何以编程方式使用UIScrollView进行UIStackView滚动?

时间:2016-06-17 19:53:24

标签: ios uiscrollview uistackview

我已经看到了几个使UIStackView滚动UIScrollView的解决方案,但它们都依赖于Autolayout和IB。

有没有办法以编程方式进行?

我见过这个例子:https://gist.github.com/twostraws/a02d4cc09fc7bc16859c

但是它使用了Visual Format Language,而我正在使用Layout Anchor API。

布局锚点API:

view.leadingAnchor.constraintEqualToAnchor(otherview.topAnchor).active = true

2 个答案:

答案 0 :(得分:0)

您可以尝试 ScrollableStackView https://github.com/gurhub/ScrollableStackView

示例代码(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]; 
// ...

希望它有所帮助。

答案 1 :(得分:0)

我希望做同样的事情并偶然发现excellent post.总结一下,将UIStackView嵌入UIScrollView,并通过设置锚点继续朝着您的方向前进UIStackView的约束与UIScrollView

的约束相匹配
stackView.leadingAnchor.constraintEqualToAnchor(scrollView.leadingAnchor).active = true
stackView.trailingAnchor.constraintEqualToAnchor(scrollView.trailingAnchor).active = true
stackView.bottomAnchor.constraintEqualToAnchor(scrollView.bottomAnchor).active = true
stackView.topAnchor.constraintEqualToAnchor(scrollView.topAnchor).active = true
stackView.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true