如何制作像Glympse iphone app这样的介绍屏幕

时间:2012-11-14 08:05:31

标签: iphone ios glympse

当您第一次启动Glympse iphone应用时,Glympse会显示一个介绍屏幕。 当您从上到下滚动屏幕时,它将动态更改内容并且动画非常流畅。 您还可以在设置菜单中重播此简介。

我很想知道如何在iphone中构建这样一个屏幕位置感知动画页面。 我甚至想知道这个屏幕是用html5 + css3构建的吗?就像this page

2 个答案:

答案 0 :(得分:3)

以下是我实施简介序列的方法:

由于UIScrollViewDelegate未向我提供scrollview内容的实际显示坐标,因此我创建了一个派生自UIScrollView并覆盖setContentOffset的新类。我还定义了一个委托协议,该协议在调用setContentOffset时触发,并通知侦听器传递给setContentOffset方法的contentOffset值。 (理想情况下,这将是iOS的UIScrollViewDelegate委托的一部分)

委托的实现者现在能够在滚动发生时接收实际的内容偏移量。当滚动视图并显示不同的内容时,我会根据contentOffset的垂直坐标触发动画。这些触发器在垂直点(Y值)数组中定义,每个垂直点与两个函数调用相关联,动画UI元素在视图中和视图外。

当contentOffset Y值大于触发点时,我将特定UI元素设置为视图并将动画设置为“已触发”。动画通常使用Block-Based Animation淡入或调整大小。当Y值小于触发点并且之前已触发动画时,我使用不同的动画(例如淡出)将对象设置为动画,并且标记为“未触发”

这是确定UI元素是否可见的关键计算:

    CGPoint point = [contentOffset CGPointValue];
    CGFloat visible = _scrollView.bounds.size.height + point.y;

    if ( _triggers[ndx].y < visible )
    {
        if ( !_triggers[ndx].triggered )
        {
            _triggers[ndx].triggered = true;
            // call trigger's function to animate item into view
        }
    }
    else
    {
        if (_triggers[ndx].triggered)
        {
            _triggers[ndx].triggered = false;
            // call trigger's function to animate item out of view
        }
    }

答案 1 :(得分:2)

看到它的平滑程度不是HTML5,而是由CABasicAnimation触发的UIScrollViewDelegate对象。

首先阅读Introduction to Core Animation Programming GuideCore Animation Cookbook