前言
版本新特性的實現方式一般有兩種,一種創建控制器,另一種是創建UIView添加到當前窗口上面
實際項目中,我推薦使用第二種方法,因為新特性一般都是靜態頁面,交互很少,根本不需要創建一個控制器去管理,由于新特性項目中經常用到,因此這里分享一下個人封裝的一個新特性工具
-
先來圖~
新特性
API分析
- 新特性項目中是唯一的,因此使用單例模式,需要一個單例創建的方法
/**
* @author Clarence
*
* 單例
*/
+ (instancetype)shareManager;
- 顯示和移除,總是成對出現,為了方便,調用者只需要傳入圖片名數組,就能顯示出來
/**
* @author Clarence
*
* 顯示新特性頁面,傳入圖片名數組
*/
- (void)fl_showFeatureView:(NSArray *)imageArray;
/**
* @author Clarence
*
* 移除新特性頁面
*/
- (void)fl_removeFeatureView;
- 有默認功能,點擊最后一張新特性移除新特性,默認關閉;左滑最后一張新特性頁面會移除新特性,默認開啟
/**
* @author Clarence
*
* 點擊最后一張新特性頁面會移除新特性,默認關閉(必須在show之后設置)
*/
@property (nonatomic,assign)BOOL lastFeatureViewClickToDismiss;
/**
* @author Clarence
*
* 左滑最后一張新特性頁面會移除新特性,默認開啟(必須在show之后設置)
*/
@property (nonatomic,assign)BOOL lastFeatureViewSwipToDismiss;
- 一般的新特性最后一頁元素比較多,因此對外提供最后一頁的view,當然只讀的,不能修改,但能添加控件進去,例如添加一個按鈕,點擊按鈕移除新特性(如上圖)
/**
* @author Clarence
*
* 最后一頁的新特性頁,默認已經有一張特性圖,可添加新控件(必須在show之后設置)
* 注意:此時lastFeatureView 的 x值并不是0
*/
@property (nonatomic,weak,readonly)UIView *lastFeatureView;
- 可能會有某種需求,一進來不是顯示第一頁,那么我提供了一個下標,允許調用者設置
/**
* @author Clarence
*
* 當前的頁面,可設置(必須在show之后設置)
*/
@property (nonatomic,assign)NSInteger currentIndex;
- 工具中默認有pageControl,開放性不強,暫時提供修改pageControl點的顏色,一般項目也夠用
/**
* @author Clarence
*
* 默認pageControl點的顏色(必須在show之后設置)
*/
@property(nonatomic,strong)UIColor *pageIndicatorTintColor;
/**
* @author Clarence
*
* 當前選中的pageControl點的顏色(必須在show之后設置)
*/
@property(nonatomic,strong)UIColor *currentPageIndicatorTintColor;
調用
[[FLFeatureManager shareManager] fl_showFeatureView:@[@"recordBackgroundImage 1",@"recordBackgroundImage 2",@"recordBackgroundImage 3"]];
總結
-
注意點:
- 獲取lastFeatureView 之后,其frame 的 x值并不是0,添加控件的時候需要注意
- 如果是用main.Storyboard創建跟控制器的話,在delegate中設置貌似沒效果的,此時需要用代碼創建根控制器,然后再設置新特性(至于原因:我沒有去考究,大家知道的一定要留言告訴我喔~先謝謝了??)
內部處理了是否第一次進入,外界不需要判斷,直接拿來show就行
功能性代碼比較簡單,主要是封裝的思路以及考慮拓展性問題,如果大家有什么需求或者其他問題,歡迎留言,喜歡可以關注我,給個like,將是無限動力~
-
gitHub地址