效果滚动水平为Yahoo Weather iOS App

时间:2013-09-06 08:03:57

标签: ios

有人可以帮我解决效果scrollview滑动为Yahoo Weather iOS App吗? 谢谢!

self.backgroundView = [[DKLiveBlurView alloc] initWithFrame: self.view.bounds];        
    NSString *fileName = [[NSBundle mainBundle] pathForResource:[self.imageArray objectAtIndex:randomId] ofType:@"png"];        
    UIImage *image = [UIImage imageWithContentsOfFile:fileName];
    self.backgroundView.originalImage = image;
    self.backgroundView.scrollView = self.tableView;
    self.backgroundView.isGlassEffectOn = YES;
    self.tableView.backgroundView = self.backgroundView;

3 个答案:

答案 0 :(得分:2)

您可以使用带分页的UIScrollView实现它。通过在didScroll上设置适当的contentOffset,您可以实现像Yahoo天气一样的视差效果。 WWDC 2013上有关于嵌套滚动视图的精彩视频,可以参考。

我还使用scrollView创建了一个示例项目,该项目实现了视差效果 - https://github.com/vin25/SideScrollParallaxEffect-iOS

答案 1 :(得分:1)

我相信天气应用程序正在使用UIPageController,并且过渡效果自动随之而来。您可以找到许多有关其工作原理的教程(例如,请查看此one)。

在您应用的视图控制器头文件中,添加UIPageViewController的属性:

#import <UIKit/UIKit.h>

@interface YourAppViewController : UIViewController <UIPageViewControllerDataSource>

@property (strong, nonatomic) UIPageViewController *pageController;

@end

在app的view controller .m文件中,实现以下方法:

  • 增加/减少屏幕索引并返回视图控制器以显示):

    - (UIViewController *) pageViewController:(UIPageViewController *)pageViewController
    viewControllerBeforeViewController:(UIViewController *)viewController
    {
        NSUInteger index = [(YourAppViewController *)viewController index];
        if (index == 0) {
            return nil;
        }
    
        index--;
    
        return [self viewControllerAtIndex:index];
    }
    
    - (UIViewController *) pageViewController:(UIPageViewController *)pageViewController 
    viewControllerAfterViewController:(UIViewController *)viewController
    {
        NSUInteger index = [(YourAppViewController *)viewController index];
        index++;
    
        if (index == 5) {
            return nil;
        }
    
        return [self viewControllerAtIndex:index];
    }
    
  • 最后,设置页面指示符中的点数以及必须是哪个点 在开头选择。

    - (NSInteger) presentationCountForPageViewController:
      (UIPageViewController *)pageViewController 
    {
        // The number of items reflected in the page indicator.
        return 5;
    }
    
    - (NSInteger) presentationIndexForPageViewController:
    (UIPageViewController *)pageViewController
    {
        // The selected item reflected in the page indicator.
        return 0;
    }
    

答案 2 :(得分:0)

我使用普通的UIPageViewController子类实现了Yahoo Weather的视差效果,并为背景图像的视差效果实现了自动布局约束。 (我不想重新创建带有页面的整个scrollView,因为我确信UIPageViewController已经免费处理了很多东西。)

在这里是: https://github.com/frederic-adda/TestParallax/tree/master