š iOS Form UI Builder in Swift (powered by UICollectionView)
ā ļø This sample is using demo-components.
StackScrollView does not have default-components.
StackScrollView is like UIStackView.
So, we need to create the components we need.
StackScrollView builds form UI easily.
StackScrollView includes UICollectionView.
UICollectionView calculates size of view by AutoLayout, then that display.
(Use systemLayoutSizeFitting
)
StackCell
instead of Cell
on StackScrollView.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.