StackScrollView builds form UI easily.
StackScrollView includes UICollectionView.
UICollectionView calculates size of view by AutoLayout, then that display.
(Use systemLayoutSizeFitting)
- We call
StackCellinstead ofCellon StackScrollView. - We no longer need to consider reusing Cells.
StackCellrequires constraint based layout.
let stack = StackScrollView() stack.append(view: ...) stack.remove(view: ..., animated: true)
func append(view: UIView) func remove(view: UIView, animated: Bool) func scroll(to view: UIView, at position: UICollectionViewScrollPosition, animated: Bool)
StackScrollView does not required StackCellType.
if StackCell has StackCellType, be easy that control StackCell.
func scrollToSelf(animated: Bool) func scrollToSelf(at position: UICollectionViewScrollPosition, animated: Bool) func updateLayout(animated: Bool) func remove()
Demo has included this APIs usage.
We have to set constraints completely.
final class LabelStackCell: UIView { private let label = UILabel() init(title: String) { super.init(frame: .zero) addSubview(label) label.translatesAutoresizingMaskIntoConstraints = false label.topAnchor.constraint(greaterThanOrEqualTo: topAnchor, constant: 8).isActive = true label.bottomAnchor.constraint(lessThanOrEqualTo: bottomAnchor, constant: 8).isActive = true label.rightAnchor.constraint(equalTo: rightAnchor, constant: 8).isActive = true label.leftAnchor.constraint(equalTo: leftAnchor, constant: 8).isActive = true label.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true heightAnchor.constraint(greaterThanOrEqualToConstant: 40).isActive = true label.font = UIFont.preferredFont(forTextStyle: .body) label.text = title } }
let stack = StackScrollView() stack.append(view: LabelStackCell(title: "Label"))
We can use UIView from XIB.
This framework has NibLoader<T: UIView>.
It might be useful for you.
You can create any Cell.
Please, check StackScrollView-Demo
You can create Cell with ManualLayout.
If you use ManualLayout, the Cell have to use ManualLayoutStackCellType.
Then, return self-size based on maximum size in size(maxWidth:maxHeight)
muukii, [email protected]
StackScrollView is available under the MIT license. See the LICENSE file for more info.

