StackScrollView 1.4.0

StackScrollView 1.4.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Nov 2018
SPMSupports SPM

Maintained by muukii, muukii.


Downloads

Total546
Week0
Month0

Installs

Apps40
Test Targets1
powered by Segment

GitHub

Stars240
Watchers8
Forks13
Issues1
Contributors1
Pull Requests0

Code

Files3
LOCLines of Code 200


StackScrollView

CI Status Version License Platform Carthage compatible

What is this?

StackScrollView builds form UI easily.

StackScrollView includes UICollectionView. UICollectionView calculates size of view by AutoLayout, then that display. (Use systemLayoutSizeFitting)

  • We call StackCell instead of Cell on StackScrollView.
  • We no longer need to consider reusing Cells.
  • StackCell requires constraint based layout.

Roadmap?

This library supply only functions that create form UI. We need to create own StackCells to our app. I think good that create useful StackCells component library.

Usage

Basic usage

let stack = StackScrollView()

stack.append(view: ...)

stack.remove(view: ..., animated: true)

APIs

StackScrollView

func append(view: UIView)
func remove(view: UIView, animated: Bool)
func scroll(to view: UIView, at position: UICollectionViewScrollPosition, animated: Bool)

StackCellType

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.

Create CustomCell from Code

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"))

Create CustomCell from XIB

We can use UIView from XIB.

This framework has NibLoader<T: UIView>. It might be useful for you.

Create everything

You can create any Cell. Please, check StackScrollView-Demo

ManualLayout

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)

Author

muukii, [email protected]

License

StackScrollView is available under the MIT license. See the LICENSE file for more info.