引導(dǎo)頁是app下載后打開的第一頁斑鼻,也決定著用戶對軟件的第一印象持寄。在很多app中都是以多張圖片通過滾動的方式介紹軟件的內(nèi)容召边,但形式過于單調(diào)》撇纾現(xiàn)今app中吉挣,有通過視頻形式介紹(如keep等)派撕,都是在加強軟件的吸引力。下面這個框架這是曾經(jīng)一個項目中使用的框架听想,當(dāng)然還是以圖片為主腥刹,但加入了透明度漸變的效果,正價注重用戶體驗汉买。先來看效果:
簡述
-
LQIntroPageManager
引導(dǎo)頁管理類衔峰,主要控制引導(dǎo)頁只顯示一次(app初次下載或更新時) -
LQIntroView
引導(dǎo)頁視圖,設(shè)置引導(dǎo)頁的一些效果 -
LQIntroPage
具體引導(dǎo)頁蛙粘,可設(shè)置圖片垫卤,文字等
使用
- 1.創(chuàng)建若干
LQIntroPage
,設(shè)置每一頁的圖片出牧、文字 - 2.創(chuàng)建
LQIntroView
穴肘,通過initWithFrame:(CGRect)frame andPages:(NSArray *)pagesArray
方法傳入LQIntroPage
數(shù)組 - 3.設(shè)置代理(引導(dǎo)頁結(jié)束時調(diào)用)
- 4.通過
showInView:(UIView *)view animateDuration:(CGFloat)duration
將其添加到當(dāng)前view上
@property (nonatomic, strong) LQIntroView *intro;
- (void)showCustomIntro {
LQIntroPage *page1 = [LQIntroPage page];
page1.bgImage = [UIImage imageNamed:@"歡迎頁1"];
LQIntroPage *page2 = [LQIntroPage page];
page2.bgImage = [UIImage imageNamed:@"歡迎頁2"];
LQIntroPage *page3 = [LQIntroPage page];
page3.bgImage = [UIImage imageNamed:@"歡迎頁3"];
_intro = [[LQIntroView alloc] initWithFrame:self.view.bounds andPages:@[page1,page2,page3]];
[_intro setDelegate:self];
[_intro showInView:self.view animateDuration:0.0];
}
- 5.調(diào)用方法,通過
[[LQIntroPageManager sharedInstance] disPlayTheIntroPage]
判斷是否執(zhí)行
if ([[LQIntroPageManager sharedInstance] disPlayTheIntroPage]) {
[self showCustomIntro];
}
主要方法
- LQIntroPageManager
單例類初始化
+ (instancetype)sharedInstance;
是否需要顯示(安裝后首次顯示)
- (BOOL)disPlayTheIntroPage;
- LQIntroView
設(shè)置大小及數(shù)組
- (id)initWithFrame:(CGRect)frame andPages:(NSArray *)pagesArray;
設(shè)置位置及出現(xiàn)動畫時間
- (void)showInView:(UIView *)view animateDuration:(CGFloat)duration;
設(shè)置消失時間
- (void)hideWithFadeOutDuration:(CGFloat)duration;
- LQIntroPage
初始化
+ (LQIntroPage *)page;
自定義初始化
+ (LQIntroPage *)pageWithCustomView:(UIView *)customV;
- LQIntroDelegate
處理消失后要做的事
- (void)introDidFinish;
補充
兼容iPad和iPhone
因為在我的項目中要求iPad和iPhone兼容舔痕,即一個包同時支持兩種設(shè)備评抚,所以淺談一下版本兼容和這個view的改法。在項目中伯复,遇到同一個項目同時兼容iPad和iPhone時往往希望能夠用最少量的代碼完成慨代。
我在做兼容時會定義兩個宏
//適配iPhone尺寸
#define SIZE_SCALE_IPHONE6(x) (x * ([UIScreen mainScreen].bounds.size.width / 375))
//適配iPad尺寸
#define SIZE_SCALE_IPADAIR(x) (x * ([UIScreen mainScreen].bounds.size.width / 768))
在使用時如字體,定義大小時加上這個宏啸如,如在Masory中:
make.top.equalTo(_loginBtn.mas_bottom).with.offset(SIZE_SCALE_IPHONE6(10));
一般情況下侍匙,會通過UI_USER_INTERFACE_IDIOM()
判斷當(dāng)前設(shè)備是iPhone還是iPad,然后執(zhí)行不同的代碼叮雳。 其枚舉類型如下:
typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
UIUserInterfaceIdiomUnspecified = -1,
UIUserInterfaceIdiomPhone NS_ENUM_AVAILABLE_IOS(3_2), // iPhone and iPod touch style UI
UIUserInterfaceIdiomPad NS_ENUM_AVAILABLE_IOS(3_2), // iPad style UI
UIUserInterfaceIdiomTV NS_ENUM_AVAILABLE_IOS(9_0), // Apple TV style UI
UIUserInterfaceIdiomCarPlay NS_ENUM_AVAILABLE_IOS(9_0), // CarPlay style UI
};
在LQIntroView
中若要修改需手動修改
感謝查看想暗,希望多多指正!
文章優(yōu)先發(fā)表于:http://keyliu.com
轉(zhuǎn)載請注明出處帘不。