Framer 中文文档

滚动 Scroll丨Framer 文档 Code

2017-09-04  本文已影响69人  刘板栗

Code

熟悉iOS平滑滚动吧?要达到这个恰到好处感觉涉及很多物理学。
Framer 中的 Scroll 组件会为保留这些属性,在此基础上还支持自定义。

一个Scroll 组件是由两个层构建的。首先,Scroll 组件本身,用作蒙版层。其次,内容层,已启用的拖动 draggable 和预定的约束范围。根据子级的大小计算内容层大小。

# 创建 Scroll 组件 
scroll = new ScrollComponent
    size: 120
 
# 指定内容层 
layerA.parent = scroll.content
 
layerB.parent = scroll.content
scrolling

和拖动图层一样,也可以限制滚动方向。

scroll.scrollHorizontal = true
scroll.scrollVertical = false

包装 Wrapping

给图层添加滚动交互用,可以用 ScrollComponent.wrap() 标签将他们包装在 Scroll组件中。

# 封装内容图层 
scroll = ScrollComponent.wrap(content)

插入内容 Content Inset

contentInset 属性给内容添加间距,用于将内容放置在可滚动区域时,周围需要留一些额外的边距。如顶部有导航栏的列表,默认状态下,顶部的间距是要算上导航栏的高度的,这个导航栏的高度就是额外的边距啦。
案例 iOS Twitter

# 添加一个滚动组件并禁用水平滚动,容器宽120高120
scroll = new ScrollComponent
    width: 120
    height: 120
    scrollHorizontal: false
 
# 插入额外边距,上下各加40
scroll.contentInset =
    top: 40
    bottom: 40
    right: 0
    left: 0
scrolling-inset

Events

三个基本事件 scrollStartscrollscrollEnd。在 Scroll 事件中,可以检索可滚动图层的位置。例如,可以用 scroll.scrollY 属性定义基于垂直滚动距离开始的动画。

# 添加滚动组件,并禁用水平滚动 
scroll = new ScrollComponent
    scrollHorizontal: false
 
# 监听滚动事件:滚动到Y小于-10时,图层 layerA 缩放到100%
scroll.onScroll ->
    if scroll.scrollY < -10
 
        layerA.animate
            scale: 1
scrolling-scrolly.gif

滚动动画 Scroll Animation

和拖动图层一样,当启用动量和反弹时,会出现两个特定事件:ScrollAnimationDidStartScrollAnimationDidEnd。发生在滚动结束后。

# 滚动结束后,开始 ScrollAnimation
scroll.onScrollAnimationDidStart ->
  layer.animation
    width: 100

# ScrollAnimation结束后的动画
scroll.onScrollAnimationDidEnd ->
  layer.animate
    width: 120
scrolling-didstart
上一篇下一篇

猜你喜欢

热点阅读