UIScrollView和UIPageControl實現app啟動滑動圖
為了吸引使用者眼球或者傳達更多的資訊,啟動app時,一般都會附上一個滑動圖(只顯示一次),下面為大家詳解。
一、使用NSUserDefaults 判斷滑動圖有沒有出現過,載入滑動圖
NSUserDefaults 簡介:
NSUserDefaults可以將資料永久的儲存在手機中,他是一個單例,用起來很方便,所以很適合用於儲存簡單的資料和為資料做標記。
更多的關於NSUserDefaults的介紹請看:NSUserDefaults 簡介
你可以選擇在AppDelegate.m中的didFinishLaunchingWithOptions 方法或者“初始介面”(載入的第一個viewController)的 viewDidLoad 方法中進行判斷滑動圖是否出現過,寫上程式碼:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //判斷滑動圖是否出現過,第一次呼叫時“isScrollViewAppear” 這個key 對應的值是nil,會進入if中 if (![@"YES" isEqualToString:[userDefaults objectForKey:@"isScrollViewAppear"]]) { [self showScrollView];//顯示滑動圖 }
二、初始化 UIScrollView 和 UIPageControl 為啟動滑動圖做準備
UIScrollView : 帶有滑動效果,在上面加入UIImageView再設定代理後,可以實現翻頁顯示圖片的效果
涉及的相關屬性:
contentSize : UIScrollView 顯示的尺寸,這個按需求而設
pagingEnabled : 是否支援一頁一頁的翻,設定成YES後,每一次滑動,翻動一頁;
bounces:是否支援反彈,這是一個動畫效果,大家可以設定來看看,一般滑動圖設定為NO;
showsHorizontalScrollIndicator : 是否顯示水平的滑動條
UIPageControl:一般配合UIScrollView使用,指向UIScrollView當前所指的頁數
涉及的相關屬性:
numberOfPages:一共有幾個點(幾頁),這個要設定得和滑動圖的頁數一樣
相關程式碼:
#pragma mark - 滑動圖 -(void) showScrollView{ UIScrollView *_scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds]; //設定UIScrollView 的顯示內容的尺寸,有n張圖要顯示,就設定 螢幕寬度*n ,這裡假設要顯示4張圖 _scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 4, [UIScreen mainScreen].bounds.size.height); _scrollView.tag = 101; //設定翻頁效果,不允許反彈,不顯示水平滑動條,設定代理為自己 _scrollView.pagingEnabled = YES; _scrollView.bounces = NO; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.delegate = self; //在UIScrollView 上加入 UIImageView for (int i = 0 ; i < 4; i ++) { UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * i , 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; //將要載入的圖片放入imageView 中 UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",i+1]]; imageView.image = image; [_scrollView addSubview:imageView]; } //初始化 UIPageControl 和 _scrollView 顯示在 同一個頁面中 UIPageControl *pageConteol = [[UIPageControl alloc] initWithFrame:CGRectMake(140, self.view.frame.size.height - 60, 50, 40)]; pageConteol.numberOfPages = 4;//設定pageConteol 的page 和 _scrollView 上的圖片一樣多 pageConteol.tag = 201; [self.view addSubview:_scrollView]; [self.view addSubview: pageConteol]; }
三、實現UIScrollView的代理方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 介紹:
顧名思義,這是一個滑動後減速結束的方法,這裡進行的是 UIPageControl 和 UIScrollView 的配
套使用、滑動圖消失資訊等:
涉及到的相關屬性:
UIScrollView:
contentOffset : UIScrollView 的偏移量(滑動的位置)
UIPageControl:
currentPage : UIPageControl 的當前頁
相關程式碼:
#pragma mark - UIScrollViewDelegate - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ // 記錄scrollView 的當前位置,因為已經設定了分頁效果,所以:位置/螢幕大小 = 第幾頁 int current = scrollView.contentOffset.x/[UIScreen mainScreen].bounds.size.width; //根據scrollView 的位置對page 的當前頁賦值 UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201]; page.currentPage = current; //當顯示到最後一頁時,讓滑動圖消失 if (page.currentPage == 3) { //呼叫方法,使滑動圖消失 [self scrollViewDisappear]; } }
四、從螢幕上移除UIScrollView,並儲存資訊
這裡只需要將UIScrollView和UIPageControl 從主螢幕上移除就可以了,別忘了將啟動資訊儲存到 NSUserDefaults 中,當然你可以設定一些動畫效果,或者需要點選才能移除都可以,下面給出的程式碼是一個簡單的動畫效果:
-(void)scrollViewDisappear{ //拿到 view 中的 UIScrollView 和 UIPageControl UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:101]; UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201]; //設定滑動圖消失的動畫效果圖 [UIView animateWithDuration:3.0f animations:^{ scrollView.center = CGPointMake(self.view.frame.size.width/2, 1.5 * self.view.frame.size.height); } completion:^(BOOL finished) { [scrollView removeFromSuperview]; [page removeFromSuperview]; }]; //將滑動圖啟動過的資訊儲存到 NSUserDefaults 中,使得第二次不執行滑動圖 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:@"YES" forKey:@"isScrollViewAppear"]; }
相關文章
- 直播app開發,實現輪播圖上下自動滑動展示效果APP
- 【iOS開發】UIScrollView看不到內容、UIScrollView不能滑動iOSUIView
- App啟動廣告頁的實現和封裝APP封裝
- iOS網路開發之三——iOS 10使用NSJSONSerialization+SDWebImage+UIScrollView實現圖片的迴圈播放、手動滑動...iOSJSONWebUIView
- RecyclerView 實現滑動刪除和拖拽功能View
- RecyclerView實現滑動刪除和拖拽功能View
- 巢狀UIScrollview的滑動衝突解決方案巢狀UIView
- iOS UIScrollView 沒有從頂部開始滑動iOSUIView
- canvas實現滑動驗證Canvas
- Flutter淘寶App新增啟動圖最簡單實現方法FlutterAPP
- iOS App Icon和啟動圖尺寸配置iOSAPP
- Twitter iOS App 啟動動畫的實現iOSAPP動畫
- Mac生成APP圖示和啟動圖的指令碼MacAPP指令碼
- uniapp---app滑動翻頁(上滑、下滑、左滑、右滑)APP
- 小說APP原始碼,手動滑動輪播圖時,輪播圖跟隨移動APP原始碼
- C#滑動拼圖驗證碼實現筆記C#筆記
- 微信小程式swiper實現 句子控app首頁滑動卡片微信小程式APP
- 使用ViewPager和TabLayout來實現滑動切換效果ViewpagerTabLayout
- 使用Webview實現app啟動引導頁WebViewAPP
- uniapp 滑動切換APP
- Qt實現炫酷啟動圖-動態進度條QT
- 手機直播原始碼,實現圖片瀑布流式滑動效果原始碼
- Vue.js 滑動拼圖驗證碼實現筆記Vue.js筆記
- 基於Nuxt.js實現滑動拼圖驗證碼UXJS
- iOS APP啟動廣告實現方式 與 APP喚端呼叫iOSAPP
- 原生 js 實現移動端 Touch 滑動反彈JS
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- 如何實現 iOS App 的冷啟動優化iOSAPP優化
- 用ListView簡單實現滑動列表View
- jquery實現滑動門效果詳解jQuery
- 移動端上滑實現翻頁功能
- iOS6下實現滑動返回iOS
- js實現手機網頁滑動JS網頁
- 安卓中如何實現滑動導航安卓
- 實現抖音 “影片無限滑動“效果
- 直播軟體app開發,左右自動滑動的輪播圖廣告APP
- 程式啟動原理和UIApplicationUIAPP
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS