`
zl4393753
  • 浏览: 340143 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

UITableView Parallax Background a la Path

 
阅读更多
Original Link: http://rowboatrevolution.com/2012/02/uitableview-parallax-background-a-la-path/

Path does a clever little parallax trick when you overscroll the main timeline view. This effect gives a nice sense of depth between the tableview and background image.

Reproducing it is quite easy, and only requires a few entry points.

The gist: give the UITableView a transparent header, through which we see the positioned background image. When the user scrolls, if the scroll offset is negative, position the underlying image accordingly.

1. Add a UIImageView behind the UITableView and offset it a bit vertically from its natural state. This gives some room for it to move vertically and still be onscreen.

- (void)viewDidLoad {
    [super viewDidLoad];

    // Create an empty table header view with small bottom border view
    UIView *tableHeaderView = [[UIView alloc] initWithFrame: CGRectMake(0.0, 0.0, self.view.frame.size.width, 180.0)];
    UIView *blackBorderView = [[UIView alloc] initWithFrame: CGRectMake(0.0, 179.0, self.view.frame.size.width, 1.0)];
    blackBorderView.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 0.0 alpha: 0.8];
    [tableHeaderView addSubview: blackBorderView];
    [blackBorderView release];
    
    _tableView.tableHeaderView = tableHeaderView;
    [tableHeaderView release];
    
    // Create the underlying imageview and offset it
    _headerImageYOffset = -150.0;
    _headerImage = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"header-image.png"]];
    CGRect headerImageFrame = _headerImage.frame;
    headerImageFrame.origin.y = _headerImageYOffset;
    _headerImage.frame = headerImageFrame;
    [self.view insertSubview: _headerImage belowSubview: _tableView];
}


2. Hook up your controller as a UIScrollViewDelegate and implement the scrollViewDidScroll callback.
3. For each call, move the underlying image a multiple of the scroll offset.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat scrollOffset = scrollView.contentOffset.y;
    CGRect headerImageFrame = _headerImage.frame;
    
    if (scrollOffset < 0) {
         // Adjust image proportionally
        headerImageFrame.origin.y = _headerImageYOffset - ((scrollOffset / 3));
    } else {
         // We're scrolling up, return to normal behavior
        headerImageFrame.origin.y = _headerImageYOffset - scrollOffset;
    }
    _headerImage.frame = headerImageFrame;
}


You could take this even further by having multiple images relatively offset, creating a nice multi-layer parallax.



分享到:
评论

相关推荐

    UICollectionView替换UITableView类似Parallax Header,Sticky Section Header.zip

    UICollectionView替换UITableView。类似Parallax Header,Sticky Section Header。.zip,uiCollectionView替换uiTableView。更像是视差标题,粘性部分标题。专为iOS 7打造。

    UITableView、UITableView基本用法、UITableView详解

    // Do any additional setup after loading the view, typically from a nib. [self loadData]; } #pragma mark 载入一些数据,用于显示在 UITableView 上 - (void)loadData { // 初始化数组 self.tableDataArr...

    UITableView

    UITableView是iOS应用开发中不可或缺的一部分,特别是在Swift编程环境中。它是一种用于显示大量数据的视图控件,可以灵活地展示列表或表格形式的信息。在Swift中,UITableView的使用涉及到多个知识点,包括数据源...

    iPhone之UITableView入门

    在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...

    parallax效果 iOS cell滑动 demo

    `WELTableViewCell.h`通常会声明公共属性和方法,如背景视图(background view)、内容视图(content view)以及与Parallax效果相关的配置参数。例如,可能有`parallaxFactor`属性来控制视差的强度,或者`scrollView...

    UITableview处理键盘遮挡

    在iOS开发中,`UITableView` 是一个非常常用且强大的组件,用于展示列表数据。然而,在实际应用中,我们经常会遇到一个问题:当用户在`UITableView`中的输入框(如UITextField)中输入时,弹出的键盘可能会遮挡住...

    UITableView教材

    ### UITableView教材:构建与操作教程 #### 一、Table的整个框架搭建 ##### 1、两种样式的初始化 UITableView 提供了两种不同的样式:`UITableViewStylePlain` 和 `UITableViewStyleGrouped`。这两种样式的选择取...

    UITableView的SectionHeader的复用

    在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。当表格中的数据分为多个部分(sections)时,每个部分通常会有一个header视图,用来标识该部分的主题。然而,随着数据量的增大,如果对每个...

    IOS iphone UITableView简单例子

    在iOS开发中,UITableView是一种非常重要的控件,用于展示数据列表。这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,...

    IOS UITableView 的简单案例

    在iOS开发中,UITableView是一种非常重要的控件,用于展示列表数据。这个简单的案例将向我们展示如何使用UITableView来显示从plist文件中读取的数据,并且为每个单元格(Cell)设置点击事件。以下是对这个案例的详细...

    UITableView 实现滚动视差

    滚动视差(Parallax Scrolling)是一种视觉效果,当用户滚动界面时,背景元素以较慢的速度移动,与前景元素形成差异,从而创造出深度感和动态美感。这种效果在许多现代应用中都可以看到,比如Instagram、Facebook等...

    UITableView2 Demo代码

    在iOS开发中,UITableView是一个非常重要的组件,用于展示列表数据,比如应用的设置菜单、联系人列表等。这个"UITableView2 Demo代码"很显然是一个示例项目,旨在演示如何实现UITableView的一些高级特性,包括缩进、...

    UITableView 详细讲解.

    UITableView 详细讲解

    IOS UItableview的重用

    UITableView通过重用单元格来达到节省内存的目的:通过为每个单元格指定一个重用标识符 reuseIdentifier 即指定了单元格的种类 以及当单元格滚出屏幕时 允许恢复单元格以便重用 对于不同种类的单元格使用不同的ID ...

    UITableView 的缩放和展开

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。`UITableView`的缩放和展开功能通常是通过自定义扩展来实现的,特别是在构建类似下拉菜单或树形结构的界面时。`UITableViewDropDown`的概念可能指的...

    swift-UITableViewCache-UITableView缓存

    在iOS应用开发中,Swift语言为我们提供了强大的UITableView控件,用于展示列表数据。然而,当数据量较大或者频繁滚动时,如果不进行优化,可能会导致性能下降。这就是UITableView缓存的作用,它能有效提升滚动时的...

    UITableView Demo代码

    在iOS开发中,UITableView是用于显示可滚动列表的视图,是用户界面设计中的核心组件之一。本Demo项目“UITableView Demo”旨在展示如何在实际应用中有效地使用UITableView及其相关的UITableViewCell来构建一个功能...

    iOS UItableView

    在iOS开发中,UITableView是构建用户界面的重要组件,它用于展示列表或表格数据。这个教程将专注于如何在UITableView中实现查询功能以及集成UISEARCHBAR,让用户体验更加友好和高效。 首先,我们需要理解...

    UITableView空数据处理

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。当UITableView没有数据时,界面显示一片空白,用户体验可能不佳。因此,"UITableView空数据处理"成为了一个重要的设计和编程考虑点。本篇将深入探讨...

    iOS基本控件UITableView示例

    在iOS开发中,UITableView是一个至关重要的控件,用于展示数据列表。它被广泛应用于各种应用程序,如消息列表、联系人目录、菜单选项等。本示例将深入探讨UITableView的基本使用方法,帮助开发者理解和掌握其核心...

Global site tag (gtag.js) - Google Analytics