有人可以帮我解决效果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;
答案 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