iOS首次啟動(dòng)程序引導(dǎo)圖

第一次運(yùn)行一個(gè)程序時(shí)候低匙,我們會(huì)看到新手引導(dǎo)頁朋凉,就是程序引導(dǎo)圖,除非后來版本升級给梅,或者卸載軟件后重裝才會(huì)再次看到引導(dǎo)頁

我們先來看效果:


Untit.gif

這里我第一次運(yùn)行程序時(shí)候,直接是有引導(dǎo)圖的双揪,后來兩次運(yùn)行都沒有再次出現(xiàn)引導(dǎo)圖动羽。除非下次版本更新之后,或者卸載再次運(yùn)行程序才會(huì)出現(xiàn)引導(dǎo)圖盟榴。
先給大家兩張圖片分析一下


Snip20160911_3.png

Snip20160911_2.png

現(xiàn)在來教一下大家如何用代碼實(shí)現(xiàn)引導(dǎo)圖
第一步:在AppDelegate.m文件中
Snip20160910_1.png

代碼呈上

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 1.創(chuàng)建窗口
    self.window = [[UIWindow alloc] init];
    self.window.frame = [UIScreen mainScreen].bounds;
    // 2.設(shè)置根控制器
    NSString *key = @"CFBundleVersion";
    // 上一次的使用版本(存儲(chǔ)在沙盒中的版本號)
    NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    // 當(dāng)前軟件的版本號(從Info.plist中獲得)
    NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
    if ([currentVersion isEqualToString:lastVersion]) { // 版本號相同:這次打開和上次打開的是同一個(gè)版本
        self.window.rootViewController = [[LYWTabBarViewController alloc] init];
    } else { // 這次打開的版本和上一次不一樣曹质,顯示新特性
        self.window.rootViewController = [[LYWNewfeatureViewController alloc] init];
        // 將當(dāng)前的版本號存進(jìn)沙盒
        [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:key];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    // 3.顯示窗口
    [self.window makeKeyAndVisible];
    return YES;
}
第二步:在LYWNewfeatureViewController.m 中實(shí)現(xiàn)簡單的輪播圖效果
#import "LYWNewfeatureViewController.h"
#import "LYWTabBarViewController.h"

#define NewfeatureCount 3
@interface LYWNewfeatureViewController ()<UIScrollViewDelegate>
@property (nonatomic,weak) UIPageControl *pageControl;
@end

@implementation LYWNewfeatureViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupScrollView];
}

//創(chuàng)建UIScrollView并添加圖片
- (void)setupScrollView
{
    UIScrollView *scrollView = [[UIScrollView alloc] init];
    scrollView.frame = [UIScreen mainScreen].bounds;
    [self.view addSubview:scrollView];
    
    scrollView.bounces = NO;
    scrollView.pagingEnabled = YES;
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.contentSize = CGSizeMake(3*kScreenWidth, 0);
    scrollView.delegate = self;
    
    for (NSInteger i = 0; i < NewfeatureCount; i++) {
        UIImageView *imageView = [[UIImageView alloc] init];
        imageView.x = i * kScreenWidth;
        imageView.y = 0;
        imageView.width = kScreenWidth;
        imageView.height = kScreenHeight;
        NSString *name = [NSString stringWithFormat:@"f%ld-5",i+1];
        imageView.image = [UIImage imageNamed:name];
        [scrollView addSubview:imageView];
        if (i == NewfeatureCount - 1) {
            [self setupStartBtn:imageView];
        }
    }
    
    // 4.添加pageControl:分頁,展示目前看的是第幾頁
    UIPageControl *pageControl = [[UIPageControl alloc] init];
    pageControl.numberOfPages = NewfeatureCount;
    pageControl.backgroundColor = [UIColor redColor];
    pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
    pageControl.pageIndicatorTintColor = KRGB(189, 189, 189);
    pageControl.centerX = kScreenWidth * 0.5;
    pageControl.centerY = kScreenHeight - 50;
    [self.view addSubview:pageControl];
    self.pageControl = pageControl;
}

//左上角的灰色跳過按鈕
-(void)createSkipBt
{
    UIButton *skipBt = [UIButton buttonWithType:UIButtonTypeCustom];
    skipBt.frame = CGRectMake(kScreenWidth - 90, 40, 80, 30);
    skipBt.backgroundColor = [UIColor colorWithRed:0.3 green:0.3f blue:0.3f alpha:0.3];
    [skipBt setTitle:@"跳過" forState:UIControlStateNormal];
    [skipBt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    skipBt.layer.cornerRadius = 10;
    skipBt.clipsToBounds = YES;
    skipBt.tag = 10;
    [skipBt addTarget:self action:@selector(BtnDidClicked) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:skipBt];
}

//手動(dòng)拖拽結(jié)束時(shí)候調(diào)用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    double page = scrollView.contentOffset.x / scrollView.width;
    // 四舍五入計(jì)算出頁碼
    self.pageControl.currentPage = (int)(page + 0.5);
    // 1.3四舍五入 1.3 + 0.5 = 1.8 強(qiáng)轉(zhuǎn)為整數(shù)(int)1.8= 1
    // 1.5四舍五入 1.5 + 0.5 = 2.0 強(qiáng)轉(zhuǎn)為整數(shù)(int)2.0= 2
    // 1.6四舍五入 1.6 + 0.5 = 2.1 強(qiáng)轉(zhuǎn)為整數(shù)(int)2.1= 2
    // 0.7四舍五入 0.7 + 0.5 = 1.2 強(qiáng)轉(zhuǎn)為整數(shù)(int)1.2= 1
}

//給最后一張圖片添加 進(jìn)入問醫(yī)生按鈕
- (void)setupStartBtn:(UIImageView *)imgView
{
    imgView.userInteractionEnabled = YES;
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setBackgroundImage:[UIImage imageNamed:@"cancel_ask"] forState:UIControlStateNormal];
    btn.size = btn.currentBackgroundImage.size;
    btn.centerX = imgView.width * 0.5;
    btn.centerY = imgView.height * 0.75;
    [btn setTitle:@"進(jìn)入問醫(yī)生" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(BtnDidClicked) forControlEvents:UIControlEventTouchUpInside];
    [imgView addSubview:btn];
}

//進(jìn)入問醫(yī)生按鈕點(diǎn)擊事件
-(void)BtnDidClicked
{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    window.rootViewController = [[LYWTabBarViewController alloc] init];
}

@end

這樣就??了擎场,其實(shí)很簡單羽德,不過是最近一個(gè)外包項(xiàng)目過來,然后我接手了迅办,給它做一了一個(gè)啟動(dòng)引導(dǎo)圖宅静,閑來沒事,就寫寫這片文章打法自己無聊的時(shí)間站欺,也方便很多初學(xué)者學(xué)習(xí)

備注:

如果有不足或者錯(cuò)誤的地方還望各位讀者批評指正姨夹,可以評論留言,筆者收到后第一時(shí)間回復(fù)矾策。

QQ/微信:2366889552 /lan2018yingwei磷账。

簡書號:凡塵一笑:[簡書]

http://www.reibang.com/users/0158007b8d17/latest_articles

感謝各位觀眾老爺?shù)拈喿x,如果覺得筆者寫的還湊合贾虽,可以關(guān)注或收藏一下逃糟,不定期分享一些好玩的實(shí)用的demo給大家。

文/凡塵一笑(簡書作者)

原文鏈接: http://www.reibang.com/p/8ae080edb3ea

著作權(quán)歸作者所有蓬豁,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)绰咽,并標(biāo)注“簡書作者”。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末地粪,一起剝皮案震驚了整個(gè)濱河市取募,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蟆技,老刑警劉巖玩敏,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異付魔,居然都是意外死亡聊品,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門几苍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翻屈,“玉大人,你說我怎么就攤上這事妻坝∩炜簦” “怎么了惊窖?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長厘贼。 經(jīng)常有香客問我界酒,道長,這世上最難降的妖魔是什么嘴秸? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任毁欣,我火速辦了婚禮,結(jié)果婚禮上岳掐,老公的妹妹穿的比我還像新娘凭疮。我一直安慰自己,他們只是感情好串述,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布执解。 她就那樣靜靜地躺著,像睡著了一般纲酗。 火紅的嫁衣襯著肌膚如雪衰腌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天觅赊,我揣著相機(jī)與錄音右蕊,去河邊找鬼。 笑死吮螺,一個(gè)胖子當(dāng)著我的面吹牛尤泽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播规脸,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熊咽!你這毒婦竟也來了莫鸭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤横殴,失蹤者是張志新(化名)和其女友劉穎被因,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衫仑,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梨与,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了文狱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥鞋。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞄崇,靈堂內(nèi)的尸體忽然破棺而出呻粹,到底是詐尸還是另有隱情壕曼,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布等浊,位于F島的核電站腮郊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筹燕。R本人自食惡果不足惜轧飞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撒踪。 院中可真熱鬧过咬,春花似錦、人聲如沸糠涛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忍捡。三九已至集漾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砸脊,已是汗流浹背具篇。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凌埂,地道東北人驱显。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像瞳抓,于是被迫代替她去往敵國和親埃疫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容