ios uiscrollview uistackview scrollablestackview

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