GitHub

添加新手引导页需要注意的几个小点

   在项目中添加一个新的模块时【tabbar】,会设置相应的引导页做为介绍,引导页中会设置相应的图标展示,蒙版的添加,角标的设置。首先呢是关于添加新手蒙版,无非是添加一个View,设置为对应的引导层,如果不做那种投射效果的话,可以直接设置蒙版的透明度【一般设置为0.7左右】,其他的展示就直接添加即可。不过这时候如果在界面上添加了开机引导页的话,就会造成添加的新手引导蒙版会直接覆盖到开机页上面。示例如下图所示:

 

 

解决方法分两种情况: 1、首页展示的只有一种情况的时候并且软件框架是‘底部标签式’的交互模式-----【只展示登录界面或者只展示一个home页】 这种情况下可以使用通知,首页在要展示的界面注册通知:

    // 使用引导图
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(firstload) name:@"firstloadHome" object:nil];

 ,然后在点击首页引导隐藏的按钮处发送通知

 [[NSNotificationCenter defaultCenter]postNotificationName:@"firstloadHome" object:nil];

在接收到通知的方法里直接进行加载要展示的引导页就可以了。

2、首页展示的界面可能有多种情况(未登录展示登录界面、登录了展示home界面)并且未采用UITabbar的情况,可以将视图直接添加到view上【默认添加到window上】 这样就能避免上述情况;

     除此之外呢,新的版块的加入,势必会标记一下这个版块,一般采用添加小红点的方式,一般是设置一个UITabbar的分类,在分类上添加一个View,此时要注意的有两点,(1)界面的适配要针对iPad和iPhone故要做相应的两套布局:

 if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){
        
        //ipad
        //确定小红点的位置
        float percentX = (index+0.35) / tabbarItemNums;
        CGFloat x = ceilf(percentX * tabFrame.size.width);
        CGFloat y = ceilf(0.1 * tabFrame.size.height);
        badgeView.frame = CGRectMake(x, y, 10, 10);
        [self addSubview:badgeView];
        
    }else {
        
        //iphone
        //确定小红点的位置
        float percentX = (index +0.6) / tabbarItemNums;
        CGFloat x = ceilf(percentX * tabFrame.size.width);
        CGFloat y = ceilf(0.1 * tabFrame.size.height);
        badgeView.frame = CGRectMake(x, y, 10, 10);
        [self addSubview:badgeView];
        
    }

(2)加载的时机,一般写完分类后会在界面的出现的时候调用,在界面点击的时候隐藏,但是如果工程中存在根视图(rootTabbar)的情况下,即使调用了相关的展示方法,小红点也是不会出现,这一块就涉及到视图的生命周期问题,如果在子视图的界面中调用的话,会重新创建出一个uitabbar,此时的tabbar和展示的tabbar不一致并且没有设置相应的frame所以会看到即使在首页中调用了展示小红点的方法也不会出现。所以这时候也可以采用通知的解决方式:如下所示:

在根视图中注册相应的通知

    // 添加红色小按钮
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showBadgeWithIndex) name:@"addfirstNotification" object:nil];
    

再在加载新手引导页的地方发送添加红色按钮的通知

   // 发送通知,添加红色的小按钮
        [[NSNotificationCenter defaultCenter]postNotificationName:@"addfirstNotification" object:nil];

红色按钮消失的方法同理。

 

posted @ 2017-05-15 16:30  windsSunShine  阅读(1451)  评论(0编辑  收藏  举报