1. 程式人生 > >iOS開發 封裝一個可以複用的彈窗父類(TSActionAlertView)

iOS開發 封裝一個可以複用的彈窗父類(TSActionAlertView)

1. 需求分析

功能需要: 在開發中我們總是遇到使用各種各樣的彈窗的情況,有的用作提示,有的用作功能,彈窗種類很多

他們的共同之處是:都有一個背景蒙層,都需要加一些動畫

但是它們用作展示的部分總是不盡相同:展示的樣式各異,很難統一

2. 功能需求

如果能有一個統一的,只需要寫子檢視,確定位置的父類,其他的動畫,背景已經封裝好,那麼我們就可以只寫子控制元件和佈局,而不用管其他問題

3. 功能實現

所以我造了個輪子,把展示部分的作為containerview丟擲來,佈局和子檢視可以隨意新增,只需要繼承就好了方便以後使用彈窗的時候可以快速的寫出來,不用考慮彈窗的動畫,彈窗的衝突等一系列問題,使用彈窗就像寫一個view一樣簡單.

效果圖(自己畫的介面..主要看效果,看效果):
效果圖載入中...

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. 更多功能

  • 你想知道什麼時候出現,消失?

    添加了代理

- (void)actionAlertViewWillShow;//即將出現
- (void)actionAlertViewDidShow;//已經出現
- (void)actionAlertViewWillDismiss;//即將消失
- (void)actionAlertViewDidDismiss;//已經消失
- (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. 網頁彈窗彈窗

3. web.gif

4. 下拉效果彈窗

4. pull.gif

5. 正常彈窗

5. jump.gif

更多功能正在開發中….