<aside> 💡 - Son Heung-min is the fastest and most reliable football player in South Korea.
</aside>
$$ Leverage = {Impact\;Produced \over Time\;invested} $$
The majority of an iOS developer’s work involves rendering screens through the UICollectionView.
How should develop to achieve high leverage?
Strategy Map

OutputThe part that should be displayed to the user.
Most iOS Developers invest a lot of time and energy into drawing this. In a very very complex way.
Main components
Conclusion
Programmatic expression
typealias LayoutBuilder = (_ environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection
// Define Layout
let layout: CollectionViewSectionLayout.LayoutBuilder = { environment in
// have to return a NSCollectionLayoutSection
return section
}
open class MPSCollectionViewCell: UICollectionViewCell, MPSCollectionViewUIComponent {
open func update(item: Any) {
if let data = item as? MPSCollectionViewData {
self.textLabel?.text = data.textLabelValue
self.imageView?.image = data.imageViewValue
self.secondaryTextLabel?.text = data.secondaryTextLabelValue
}
}
}
// Define View
let **퀵_버튼_아이템_View: MPSCollectionViewCell!**
// Define Section
let **sectionA** = CollectionViewSection<T>(input: 퀵_버튼_Data_Source, view: **퀵_버튼_아이템_View**, layout: **layout**)
// reuse the layout.
let **sectionB** = CollectionViewSection<T>(input: 자주_산_상품_Data_Source, view: **자주_산_상품_아이템_View**, layout: **layout**)
// make a queue
queue = ...init(requests: [**sectionA**, **sectionB**], policy = .ignore)
InputMemory/Database
A set of model
widgets = [
.init(id: , name: ...),
.init(id: , name: ...),
.init(id: , name: ...)
]
API base