iOS 圖片操作:WZRecyclePhotoStackView
大家想象一下,自己當捧著一堆照片的時候,我們是如何去放置我們的照片的? 可能我們會挑選出我們喜歡的照片放到相冊中珍藏,也有可能我們把不喜歡的扔掉。 同時我們還會存在猶豫不覺的情況,覺得,哎,我先放到后面去,一會再看吧。 當然,也有可能,您會考慮,哎,我之前一張是什么圖來著,我忘記了,我拿回來看看。
WZRecyclePhotoStackView就是模擬這種生活中的情形而產生的。 在上滑,下滑的部分,借鑒了TinderSimpleSwipeCards
這個StackView的優勢是什么?
-
采用了內存池的設計方式,對于非圖片開銷,只生成了兩個(可配置個數)的容器循環復用
-
避免了一次性加載數據的內存開銷和時間損耗,通過可配置的方式將大量的數據通過多次小部分添加加載進內存中。 同時通過預取的方式將這些新的數據自動補充進需要顯示的位置。(在預取過程中您完全可以按照需要修改為異步回調形式)
-
支持左滑、右滑操作。右滑跳過當前照片,將照片置為底部,最后查看。左滑將底部照片拉回頂部,設置為當前查看。
-
高度定制化
使用
typedef NS_ENUM(NSUInteger, WZPhotoStackStatus) { WZPhotoStackStatusLike = 0, //上滑 作為喜歡 WZPhotoStackStatusSkip = 1, //右滑 作為將照片置于底部 WZPhotoStackStatusPullBack = 2,//左滑 作為將底部照片取回 WZPhotoStackStatusHate = 3 //下滑 作為討厭 }; @protocol WZPhotoStackViewDataSource@required - (UIImage *)photoForSkipQueueInStack:(WZPhotoStackView *)stackView; - (UIImage *)photoForRatingQueueInStack:(WZPhotoStackView *)stackView; - (NSUInteger)numberOfRatingPhotosInStack:(WZPhotoStackView *)stackView; - (NSUInteger)numberOfSkipPhotosInStack:(WZPhotoStackView *)stackView; - (BOOL)canFetchMoreDataInStack:(WZPhotoStackView *)stackView; - (void)fetchMoreDataFromCoreDataInStack:(WZPhotoStackView *)stackView; - (void)fetchSkipPhotosInStack:(WZPhotoStackView *)stackView; @end @protocol WZPhotoStackViewDelegate @optional - (void)didSkipPhoto:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView; - (void)didBringBackPhoto:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView; - (void)didRatePhotoAsLike:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView; - (void)didRatePhotoAsHate:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView; - (void)didFinishRateAllPhotosInStackView:(WZPhotoStackView *)stackView; @end
只要在您的viewcontroller中添加如下代碼即可
self.stackView = [[WZPhotoStackView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))]; [self.view addSubview:self.stackView]; self.stackView.delegate = self; self.stackView.dataSource = self;
效果
項目主頁:http://www.baiduhome.net/lib/view/home/1411540639796
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!