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, muukii.app@gmail.com
StackScrollView is available under the MIT license. See the LICENSE file for more info.

