GitDemo地址,可以直接跑起來再看文章的O(∩_∩)O,有用的別忘了給老弟個Star
1. 需求分析
功能需要: 在開發(fā)中我們總是遇到使用各種各樣的彈窗的情況,有的用作提示,有的用作功能,彈窗種類很多
他們的共同之處是:都有一個背景蒙層,都需要加一些動畫
但是它們用作展示的部分總是不盡相同:展示的樣式各異,很難統(tǒng)一
2. 功能需求
如果能有一個統(tǒng)一的,只需要寫子視圖,確定位置的父類
,其他的動畫,背景已經(jīng)封裝好,那么我們就可以只寫子控件和布局,而不用管其他問題
3. 功能實現(xiàn)
所以我造了個輪子把展示部分的作為containerview拋出來,布局和子視圖可以隨意添加,只需要繼承就好了
方便以后使用彈窗的時候可以快速的寫出來,不用考慮彈窗的動畫,彈窗的沖突等一系列問題,使用彈窗就像寫一個view一樣簡單.
不過做出來之后發(fā)現(xiàn),它的功能遠遠不止這些,還可以寫列表,跳轉(zhuǎn),輸入框,選項卡,只要有黑色背景的都能用
,效果請看文章底部
效果圖:
Untitled.gif
4. 簡單介紹
2 種背景樣式
TSActionAlertViewBackgroundStyle | 說明 |
---|---|
TSActionAlertViewBackgroundStyleSolid | 背景半透明 |
TSActionAlertViewBackgroundStyleGradient | 背景漸變 |
5 種彈窗樣式
TSActionAlertViewTransitionStyle | 說明 |
---|---|
TSActionAlertViewTransitionStyleSlideFromBottom | 上來,然后下去 |
TSActionAlertViewTransitionStyleFade | 漸變 |
TSActionAlertViewTransitionStyleBounce | 彈出 |
TSActionAlertViewTransitionStyleDropDown | 下落 |
TSActionAlertViewTransitionStyleSlideFromTop | 下滑,然后上去 |
5. 怎么用
用起來不要太簡單
1. 繼承 TSActionAlertView
2. 添加自定義控件,懶加載
3. 添加事件,寫好了兩個block在頭文件中,方便使用.不夠可以自己加
4. 繼承和使用方法
```
- (void)layoutContainerView{
//布局containerview的位置,就是那個看得到的視圖
}
-(void)setupContainerViewAttributes{
//設置containerview的屬性,比 如切邊啥的
}
- (void)setupContainerSubViews{
//給containerview添加子視圖
}
- (void)layoutContainerViewSubViews{
//設置子視圖的frame
}
```
5. 彈出
TSActionDemoView * demoAlertView = [TSActionDemoView actionAlertViewWithAnimationStyle:TSActionAlertViewTransitionStyleSlideFromTop];
[demoAlertView show];
6. 消失
[demoAlertView dismissAnimated:YES];
6. 更多功能
-
你想知道什么時候出現(xiàn),消失?
添加了代理
- (void)actionAlertViewWillShow;//即將出現(xiàn)
- (void)actionAlertViewDidShow;//已經(jīng)出現(xiàn)
- (void)actionAlertViewWillDismiss;//即將消失
- (void)actionAlertViewDidDismiss;//已經(jīng)消失
- (void)actionAlertViewDidSelectBackGroundView;//點擊了背景
-
你想讓點擊背景的時候隱藏?
添加了屬性
@property (nonatomic, assign)BOOL isAutoHidden;//是否點擊背景隱藏
isAutoHidden
如果是YES=消失,如果是NO,點擊背景就不允許消失
-
不會適應屏幕高度?
demo里有教你怎么使用它來適配寬高,寬高其實在不同機型是相同的,不要超過
320
就好了
- (void)layoutContainerView{
//布局containerview的位置,就是那個看得到的視圖
//layout self.containerView self.containerview is the alertView
CGFloat hight = 222;
CGFloat spideLeft = (ScreenWidth - TSACTIONVIEW_CONTAINER_WIDTH)/2;
CGFloat spideTop = (ScreenHeight - hight) * 0.4;
self.containerView.frame = CGRectMake(spideLeft, spideTop,TSACTIONVIEW_CONTAINER_WIDTH, hight);
}
7.更多效果展示
1. 正常彈窗
1. normal.gif
2. 輸入彈窗
2. input.gif
3. 網(wǎng)頁彈窗彈窗
3. web.gif
4. 下拉效果彈窗
4. pull.gif
5. 正常彈窗
5. jump.gif
更多功能正在開發(fā).......