AFTPhotoScroller
是一种简单灵活的实现 iOS 相册基本功能的照片滚动解决方案。
它的灵感来源于 WWDC 2010 的视频 使用滚动视图设计应用,其中解释了嵌套滚动视图技术的精髓以实现照片滚动。有一些优秀的开源项目封装了所有内容,使得照片滚动代码易于实现,但 AFTPhotoScroller
是不同的。
与经典的照片滚动器类似,AFTPhotoScroller
可以实现从左到右的分页滚动和单张照片的缩放。以下是 AFTPhotoScroller
的特性:
与 UIPageViewController
不同,AFTPhotoScroller
没有控制器类。这是一个基于视图的公开接口,唯一需要的类是 AFTPagingScrollView
,这意味着您可以为不同的情境实现大量定制的控制器,例如直接使用 UITableView
而不是 UITableViewController
。它像 UIPageViewController
一样处理页面重用、填充计算和最小图像缓存概念,只是没有页面翻页效果和书脊位置。
有许多细节可以为您自定义:
有大量的控制流程供您自定义
首先,安装 AFTPhotoScroller
。然后在您的 UIViewController
子类中 #import <AFTPhotoScroller/AFTPhotoScroller.h>
,您可以简单地这样做。
- (void)viewDidLoad {
[super viewDidLoad];
self.automaticallyAdjustsScrollViewInsets = NO;
self.pagingView = [[AFTPagingScrollView alloc] initWithFrame:self.view.bounds];
self.pagingView.dataSource = self;
self.pagingView.paddingBetweenPages = 6;
[self.view addSubview:self.pagingView];
self.images = ... // load images
[self.pagingView reloadData]; // build UI and load required data
}
#pragma mark - AFTPagingScrollViewDataSource
- (NSInteger)numberOfPagesInPagingScrollView:(AFTPagingScrollView *)pagingScrollView {
return self.images.count;
}
- (UIImage *)pagingScrollView:(AFTPagingScrollView *)pagingScrollView imageForPageAtIndex:(NSInteger)pageIndex {
return self.images[pageIndex];
}
首先,安装 AFTPhotoScroller
(请在 Podfile 中 务必使用 use_frameworks!
)然后 import AFTPhotoScroller
在您的 UIViewController
子类中,您可以简单地这样做。
import UIKit
import AFTPhotoScroller
class ViewController: UIViewController, AFTPagingScrollViewDataSource {
var pagingView: AFTPagingScrollView!
var images: [UIImage]!
override func viewDidLoad() {
super.viewDidLoad()
pagingView = AFTPagingScrollView(frame:view.bounds)
pagingView.isParallaxScrollingEnabled = true
pagingView.dataSource = self
view.addSubview(pagingView)
images = loadAllImages()
pagingView.reloadData()
}
public func numberOfPages(in pagingScrollView: AFTPagingScrollView) -> Int {
return images.count
}
public func pagingScrollView(_ pagingScrollView: AFTPagingScrollView, imageForPageAt pageIndex: Int) -> UIImage {
return images[pageIndex]
}
func loadAllImages() -> [UIImage] {
....
}
}
示例应用可供下载。它展示了如何通过 AFTPhotoScroller
构建不同的照片滚动器。与自定义底部页码栏等 UI 组件配合良好。此示例使用带有推送动画的弹出导航栏,而不是真实的 UINavigationController
。
与示例应用不同,我们不建议在真实项目中一次性将所有图像资源加载到内存中。
iOS 6+
AFTPhotoScroller 可以通过 CocoaPods 使用。要安装它,只需将以下行添加到您的 Podfile 中
pod "AFTPhotoScroller"
huangkun, [email protected]
AFTPhotoScroller 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。