前言: 在第一次安裝App, 或者更新App的時(shí)候, 常常會(huì)出現(xiàn)一個(gè)引導(dǎo)界面, 昨天晚上花了點(diǎn)時(shí)間, 寫(xiě)了個(gè)引導(dǎo)頁(yè),太晚就沒(méi)發(fā)出來(lái), 實(shí)現(xiàn)一個(gè)引導(dǎo)頁(yè)其實(shí)并不困難. 請(qǐng)看代碼
點(diǎn)我下載Demo 有封裝好的工具類(lèi) 有用請(qǐng)Star Thanks
引導(dǎo)頁(yè)實(shí)際是一個(gè)單一的控制器 --UI 布局
- (void)guidePageControllerWithImages:(NSArray *)images
{
UIScrollView *gui = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, s_w, s_h)];
gui.delegate = self;
gui.pagingEnabled = YES;
// 隱藏滑動(dòng)條
gui.showsHorizontalScrollIndicator = NO;
gui.showsVerticalScrollIndicator = NO;
// 取消反彈
gui.bounces = NO;
for (NSInteger i = 0; i < images.count; i ++) {
[gui addSubview:({
self.btnEnter = [UIButton buttonWithType:UIButtonTypeCustom];
self.btnEnter.frame = CGRectMake(s_w * i, 0, s_w, s_h);
[self.btnEnter setImage:[UIImage imageNamed:images[i]] forState:UIControlStateNormal];;
self.btnEnter;
})];
[self.btnEnter addSubview:({
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:@"跳過(guò)" forState:UIControlStateNormal];
if (i == images.count - 1) {
[btn setTitle:@"點(diǎn)擊進(jìn)入" forState:UIControlStateNormal];
}
btn.frame = CGRectMake(s_w * i, s_h - 50, 100, 30);
btn.center = CGPointMake(s_w / 2, s_h - 60);
btn.layer.cornerRadius = 4;
btn.clipsToBounds = YES;
btn.backgroundColor = [UIColor lightGrayColor];
[btn addTarget:self action:@selector(clickEnter) forControlEvents:UIControlEventTouchUpInside];
btn;
})];
}
gui.contentSize = CGSizeMake(s_w * images.count, 0);
[self.view addSubview:gui];
// pageControl
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 0, s_w / 2, 30)];
self.pageControl.center = CGPointMake(s_w / 2, s_h - 95);
[self.view addSubview:self.pageControl];
self.pageControl.numberOfPages = images.count;
}
GNU C詳細(xì)請(qǐng)看參考鏈接 這是參考資料 首頁(yè)不要拒絕我
跳過(guò)&點(diǎn)擊進(jìn)入按鈕實(shí)現(xiàn)方法
- (void)clickEnter
{
if (self.delegate != nil && [self.delegate respondsToSelector:@selector(click)]) {
[self.delegate click];
}
}
版本號(hào)處理, 為了實(shí)現(xiàn)應(yīng)用更新出現(xiàn)引導(dǎo)頁(yè)或者第一次安裝出現(xiàn)
+ (BOOL)isShow
{
// 讀取版本信息
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
NSString *localVersion = [user objectForKey:VERSION_INFO_CURRENT];
NSString *currentVersion =[[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleShortVersionString"];
if (localVersion == nil || ![currentVersion isEqualToString:localVersion]) {
[XTGuidePagesViewController saveCurrentVersion];
return YES;
}else
{
return NO;
}
}
保存版本信息的方法
// 保存版本信息
+ (void)saveCurrentVersion
{
NSString *version =[[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleShortVersionString"];
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject:version forKey:VERSION_INFO_CURRENT];
[user synchronize];
}
pageControl跟隨移動(dòng)
#pragma mark - ScrollerView Delegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
self.pageControl.currentPage = scrollView.contentOffset.x / s_w;
}
如何使用呢?
// 測(cè)試的時(shí)候改變info 里的版本號(hào)就可以了
NSArray *images = @[@"1", @"2", @"3", @"4"];
BOOL y = [XTGuidePagesViewController isShow];
if (y) {
XTGuidePagesViewController *xt = [[XTGuidePagesViewController alloc] init];
self.window.rootViewController = xt;
xt.delegate = self;
[xt guidePageControllerWithImages:images];
}else{
[self click];
}
實(shí)現(xiàn)協(xié)議方法
- (void)click
{
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
[self.window.layer transitionWithAnimType:TransitionAnimTypeRamdom subType:TransitionSubtypesFromRamdom curve:TransitionCurveRamdom duration:2.0f];
}
篇幅太長(zhǎng)就不貼出動(dòng)畫(huà)代碼了, 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)如何書(shū)寫(xiě)請(qǐng)看Demo
您可能還對(duì)這些感興趣, 歡迎關(guān)注我順便點(diǎn)個(gè)贊, 一起學(xué)習(xí), 您還可以查看我的主頁(yè), 加入我創(chuàng)建的交流群.
全面的Swift學(xué)習(xí)資料整理 -- 簡(jiǎn)書(shū)
Swift版本仿網(wǎng)易云音樂(lè)播放音樂(lè)動(dòng)畫(huà)效果-- 簡(jiǎn)書(shū)
三分鐘教你把代碼托管到Github -- 簡(jiǎn)書(shū)
Swift 很強(qiáng)大的圖表庫(kù)-Charts使用 -- 簡(jiǎn)書(shū)
Swift版仿簡(jiǎn)書(shū)App淘寶App很友好彈出view效果 -- 簡(jiǎn)書(shū)
iOS仿美團(tuán)外賣(mài)餓了嗎App點(diǎn)餐動(dòng)畫(huà) -- 簡(jiǎn)書(shū)
iOS仿微信App添加帶箭頭的view -- 簡(jiǎn)書(shū)
---------------------------------------
走心文章, 值得點(diǎn)贊 ---文/夏天然后
微博-點(diǎn)我@夏天是個(gè)大人了 || QQQ: 498143780