iphone - 如何制作像 Glympse iPhone 应用程序一样的介绍屏幕

标签 iphone ios glympse

当您第一次启动时Glympse iPhone 应用程序中,Glympse 显示介绍屏幕。 当你从上向下滚动屏幕时,内容会动态变化,动画非常流畅。 您还可以在设置菜单中重播此介绍。

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

最佳答案

以下是我实现介绍序列的方法:

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

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

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

以下是确定 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
        }
    }

关于iphone - 如何制作像 Glympse iPhone 应用程序一样的介绍屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374998/

相关文章:

iphone - 避免 UITableViewCell 的背景 View 忽略单元格边界

iphone - 为什么我的属性字符串显示得很奇怪?

html - 解析包含 html 数据的 JSON

iOS popToRootViewControllerAnimated 无法处理委托(delegate)方法

iphone - 如何使用 google direction apis 或 iPhone 应用程序的其他一些 apis 比较两条路线

ios - iPhone In App Purchase 提示在新用户的全新设备上登录 addTransactionObserver

ios - 无法以编程方式将 ipAd 添加到 Spritekit Swift

android - 适用于 Android 的 Glympse : Obtaining API key

ios - Glympse API 针对 iOS 7.1 基础 SDK 编译时我无法运行 sendTicket (Glympse Lite API)