iOS実装ブートページは簡単です

4737 ワード

前言:初めてアプリをインストールしたり、アプリを更新したりするとき、よくガイド画面が出てきます.昨日の夜、少し時間をかけて、ガイドページを書きましたが、遅すぎて出てこなかったので、ガイドページを実現するのは難しくありません.コードを見てください.Demoをダウンロードしてパッケージ化されたツール類があります.Star Thanks
効果図
効果図
ブートページは、実際には単一のコントローラであるUIレイアウトです.
- (void)guidePageControllerWithImages:(NSArray *)images
{
    UIScrollView *gui = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, s_w, s_h)];
    gui.delegate = self;
    gui.pagingEnabled = YES;
    //      
    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:@"  " forState:UIControlStateNormal];
            if (i == images.count - 1) {
                [btn setTitle:@"    " 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詳細は参照リンクをご覧くださいこれは参考資料のトップページです私をスキップしないでください&クリックしてボタンの実現方法に入ります
- (void)clickEnter
{
    if (self.delegate != nil && [self.delegate respondsToSelector:@selector(click)]) {
        [self.delegate click];
    }
}

バージョン番号処理、アプリケーションの更新を実現するためにブートページまたは最初のインストールが表示されます.
+ (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追従移動
#pragma mark - ScrollerView Delegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    self.pageControl.currentPage = scrollView.contentOffset.x / s_w;
}

どのように使いますか?
//        info          
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];
    }

実装プロトコルメソッド
- (void)click
{
    ViewController *vc = [[ViewController alloc] init];
    self.window.rootViewController = vc;
    [self.window.layer transitionWithAnimType:TransitionAnimTypeRamdom subType:TransitionSubtypesFromRamdom curve:TransitionCurveRamdom duration:2.0f];
}

长すぎるとアニメーションコードが贴られなくなります.転场アニメーションはどのように书きますか.Demoを见てください.
これらに興味があるかもしれませんが、私に注目してください.ついでにいいねを押して、一緒に勉強してください.私のホームページを見て、私が作った交流グループに参加することもできます.全面的なSwift学習資料の整理--
Swiftバージョンはネット易雲音楽をまねて音楽のアニメーションの効果を放送します--
3分でコードをGithubに管理します
Swiftは強力なグラフライブラリ-Chartsで使用されています.
Swift版はAppをまねて宝を洗うAppを洗ってとても友好的にview効果を弾きます--
iOS仿美团外卖お腹すいた?App注文アニメ--
iOSエミュレートアプリに矢印付きviewを追加--
---------------------------------------
求初音ミク的片尾曲《君をのせて》的罗马拼音,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!