ios - ¿Cómo hacer que UIStackView se desplace con UIScrollView mediante programación?
scrollablestackview (2)
Puede probar ScrollableStackView : https://github.com/gurhub/ScrollableStackView
Código de muestra (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)
// ...
Código de muestra (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];
// ...
Espero eso ayude.
He visto varias soluciones para hacer que UIStackView
scroll con UIScrollView
pero todas dependen de Autolayout e IB.
¿Hay alguna manera de hacerlo programáticamente?
He visto este ejemplo: https://gist.github.com/twostraws/a02d4cc09fc7bc16859c
Pero usa el lenguaje de formato visual y estoy usando la API de anclaje de diseño.
La API de anclaje de diseño:
view.leadingAnchor.constraintEqualToAnchor(otherview.topAnchor).active = true
Estaba buscando hacer lo mismo y encontré esta excelente publicación. Para resumir, incruste su UIStackView
en su UIScrollView
y continúe en la dirección que estaba pensando estableciendo las restricciones de anclaje de UIStackView
para que coincidan con las de 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