StackScrollView builds form UI easily.
StackScrollView includes UICollectionView.
UICollectionView calculates size of view by AutoLayout, then that display.
(Use systemLayoutSizeFitting
)
- We call
StackCell
instead ofCell
on StackScrollView. - We no longer need to consider reusing Cells.
StackCell
requires 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.