今天分享一下私人相簿中,讀取載入、滑動翻閱大量圖片解決方案,我想強調的是,編程思想無關乎平台限制。
我要詳細說一下,在縮圖介面點擊任意小縮圖後,進入高清大圖全屏瀏覽介面的這短暫的1秒內(和後續的幾秒),都發生了什麼。
常規思路流程
點擊任意小圖後,
1.首先製作scrollview架構:大小2個scrollview,小的用於手勢縮放單一圖片,大的橫向依次載入全部照片
2.製作好scrollview架構後,載入照片
3.一切準備就緒跳轉頁面呈現給使用者選擇的大圖
載入圖片這一步,若相簿內就10幾張照片,那麼毫無技術挑戰,但是如果是300張照片呢?直接崩潰?還是讓使用者等待載入? 時間緊任務重,這一步需要拆分和最佳化.
scrollview架構需要瞭解下API,然後動動腦子了,這裡有個小竅門,很多人都問我照片與照片間的黑邊間距怎麼實現,呵呵,貼下代碼:
#define PADDING 20 - (NSInteger)loadPhotos { //清理之前照片 for (UIView *v in [_scrollView subviews]) { [v removeFromSuperview]; } workingFrame = [[UIScreen mainScreen]bounds]; workingFrame.origin.x = PADDING; for (int i = 0; i < int_total; i++) { CGRect frame = workingFrame; WQPhoto *photoView = [[WQPhoto alloc] initWithFrame:frame]; [photoView setScroller:self]; [photoView setIndex:i]; WQAlbumPhoto *photo = [albumObject._photos objectAtIndex:i]; [photo cleanThumbnail]; if (i == int_current) { //載入原圖 [photoView setImage:photo.oriImage]; [photoView setIsLoad:YES]; }else if (int_current - 10 < i && i < int_current + 10){ //載入左右臨近的縮圖 [photoView setImage:photo.thumbnail4view]; } [_scrollView addSubview:photoView]; workingFrame.origin.x = workingFrame.origin.x + 2 * PADDING + workingFrame.size.width; } //實現可滾動 [_scrollView setContentSize:CGSizeMake(workingFrame.origin.x, workingFrame.size.height / 2)]; [_scrollView setContentOffset:CGPointMake(360 * int_current, 0)]; //載入其餘縮圖 loadThread = [[NSThread alloc]initWithTarget:self selector:@selector(loadImages) object:nil]; return 0; }
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/