30
AsyncDisplayKit Магия AnjLab TechTalks 2016 г. Владимир Королев Юрий

Магия AsyncDisplayKit

  • Upload
    anjlab

  • View
    9.870

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Магия AsyncDisplayKit

AsyncDisplayKitМагия

AnjLab TechTalks 2016 г. Владимир

Королев Юрий

Page 2: Магия AsyncDisplayKit

Немного истории

• Разработан в Facebook для Paper

• Используется в Facebook messenger

• Pinterest

Page 3: Магия AsyncDisplayKit

Основная идея

Page 4: Магия AsyncDisplayKit

Интерфейсы схожи с UIKitUIView ASDisplayKit

UIImageView ASImageNode, ASNetworkImageNode

UILabel ASTextNode

UITableViewCell, UICollectionViewCell ASCellNode

UITableView ASTableView/Node

UICollectionView ASCollectionView/Node

UIButton ASButtonNode

Page 5: Магия AsyncDisplayKit

ASTextNodeпорт ComponentTextKit

Page 6: Магия AsyncDisplayKit

ASTextNode• только attributedString!

• можно указывать truncationAttributedString, additionalTruncationMessage. textNodeTappedTruncationToken!

• maximumNumberOfLines = 0

• поддержка тапов по ссылкам, passthroughNonLinkTouches, подсветка

• placeholders

Page 7: Магия AsyncDisplayKit

ASImageNode• placeholderColor

• эффективный кроп

• imageModificationBlock:

• ASImageNodeRoundBorderModificationBlock

• (borderWidth, borderColor)

• ASImageNodeTintColorModificationBlock

• (color)

Page 8: Магия AsyncDisplayKit

ASNetworkImageNode

• NSURL

• подключаемый загрузчик (ASImageDownloaderProtocol)

• подключаемый кеш (ASImageCacheProtocol)

• есть pod WebASDKImageManager

Page 9: Магия AsyncDisplayKit

UIButtonNode

• laysOutHorizontally :)

Page 10: Магия AsyncDisplayKit

ASTableView/Node

Page 11: Магия AsyncDisplayKit

ASTableView/Node

• ASTableViewDelegate - расширенный UITableViewDelegate

• ASTableViewDataSource - рассширенный UITableViewDataSource

Page 12: Магия AsyncDisplayKit

ASTableView/Node

• ASCellNode создаются все заранее (нет проблем с реюзом)

• Поддержка подзагрузки с компенсацией скролла

Page 13: Магия AsyncDisplayKit

ASTableView/Nodeвидимая область

область отрисовки

область загрузки

Page 14: Магия AsyncDisplayKit

ASTableView/NodeРаботает в 2d

Page 15: Магия AsyncDisplayKit

ASTableViewDataSource• Пакетная загрузка (Batch fetch)

• shouldBatchFetchForTableView

• tableView(tableView:willBeginBatchFetchWitchContext:)

• ASBatchContext - completeBatchFetching(didComplete: Bool)

Page 16: Магия AsyncDisplayKit

ASLayoutSpecпорт ComponentKit/LayoutComponents

Page 17: Магия AsyncDisplayKit

ASLayoutSpec• ASLayoutSpec

• ASInsetLayoutSpec

• ASRatioLayoutSpec

• ASCenterLayoutSpec

• ASOverlayLayoutSpec

• ASBackgroundLayoutSpec

• ASStaticLayoutSpec

• ASStackLayoutSpec

Page 18: Магия AsyncDisplayKit

ASLayoutable• spacingBefore

• spacingAfter

• flexGrow

• flexShrink

• flexBasis

• alignSelf

• ascender

• descender

• sizeRange

Page 19: Магия AsyncDisplayKit

ASInsetLayoutSpecinit(insets: UIEdgeInsets, child: ASLayoutable)

child

Page 20: Магия AsyncDisplayKit

ASRatioLayoutSpecinit(ratio: CGFloat, child: ASLayoutable)

child

ratio: 2.0

ratio - height / width

child

ratio: 0.5

Page 21: Магия AsyncDisplayKit

ASCenterLayoutSpecinit( centeringOptions: ASCenterLayoutSpecCenteringOptions, sizingOptions: ASCenterLayoutSpecSizingOptions, child: ASLayoutable )

child

Page 22: Магия AsyncDisplayKit

ASOverlayLayoutSpecinit(child: ASLayoutable, overlay: ASLayoutable?)

child

overlay

Page 23: Магия AsyncDisplayKit

ASBackgroundLayoutSpecinit(child: ASLayoutable, background: ASLayoutable?)

background

child

Page 24: Магия AsyncDisplayKit

ASStaticLayoutSpecinit(children: [ASStaticLayoutable])

• ASStaticLayoutable: •sizeRange: ASRelativeSizeRange •layoutPosition: CGPoint

Page 25: Магия AsyncDisplayKit

ASStackLayoutSpecпохож на UIStackView

Page 26: Магия AsyncDisplayKit

ASStackLayoutSpec

init( direction: ASStackLayoutDirection, spacing: CGFloat, justifyContent: ASStackLayoutJustifyContent, alignItems: ASStackLayoutAlignItems, children: [ASLayoutable])

Page 27: Магия AsyncDisplayKit

ASStackLayoutSpecASStackLayoutJustifyContent

.Start

.Center

.End

.SpaceBetween

.SpaceAround

Page 28: Магия AsyncDisplayKit

ASStackLayoutSpecASStackLayoutAlignItems

.Start

.End

.Center

.Stretch

.BaselineFirst (Horizontal stack only)

.BaselineLast (Horizontal stack only)

Page 29: Магия AsyncDisplayKit

Demo

Page 30: Магия AsyncDisplayKit

Вопросы?