美文网首页
自定义消息提醒-AlertMessage

自定义消息提醒-AlertMessage

作者: _ChengChengCh | 来源:发表于2015-02-06 14:53 被阅读962次

    介绍


    项目开发中因为需要一个消息提醒,找了相当久都没找到合适的,最后决定还是自己来写一个吧。渣就渣,起码能够符合需求。
    通过这么弄一弄,倒是加深了对UIView自带的动画效果的认识,这也是个不错的结果。
    <br />

    效果


    AlertMessage.gif

    恩,大概就是这样。

    AlertMessage.h


    @interface AlertMessage : UIView
    
    -(id)initWithY:(CGFloat)y andTitle:(NSString *)title; //用字符串和显示坐标来初始化
    -(id)initWithY:(CGFloat)y;
    -(id)initWithTitle:(NSString *)title;
    -(void)setStartWithY:(CGFloat)y; //设置显示坐标
    -(void)setTitle:(NSString *)title; //设置显示字符串
    -(void)showWithCover:(BOOL)boolean; //显示并设置显示之后还能否操作
    -(void)dismiss; //移除提醒
    -(void)setTitleColor:(UIColor *)titleColor; //设置字符串颜色
    -(void)setAlertColor:(UIColor *)alertColor; //设置背景颜色
    -(void)setAlertColor:(UIColor *)alertColor andTitleColor:(UIColor *)titleColor;
    -(void)setDismissOnLeft:(BOOL)isOnLeft; //设置从哪个方向消失
    
    @end
    

    头文件里面大概就是这样的结构。
    可以设置显示的地方,显示的文字,很简单。实现的功能也很简单。
    <br />

    AlertMessage.m


    其实在实现文件里面,核心只有一个。那就是设置好起始坐标,以及播放动画后所移动到的坐标。
    大概就是:

        #define HEIGHT_ALERT 55
        #define WIDTH_ALERT 180
        #define Y_OFFSET_ALERT 100
        #define X_OFFSET_ALERT (320 - WIDTH_ALERT)
        ……
        -(id)init {
            self = [self initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width, Y_OFFSET_ALERT, WIDTH_ALERT, HEIGHT_ALERT)];
            //设置初始位置,就是在屏幕之外了
            return self;
        }
        -(void)show{
            [UIView animateWithDuration:0.35f animations:^{
                [self setFrame:CGRectMake([UIScreen mainScreen].bounds.size.width - WIDTH_ALERT, self.y, WIDTH_ALERT, HEIGHT_ALERT)];
                //动画执行,并移动到结束位置
            } completion:^(BOOL finished) {
                //动画结束后执行
            }];
        }
        -(void)dismiss{
            [UIView animateWithDuration:duration animations:^{
                [self setFrame:CGRectMake(endPoint, Y_OFFSET_ALERT, WIDTH_ALERT, HEIGHT_ALERT)];
                //动画执行,并移动到结束位置
            } completion:^(BOOL finished) {
                 //动画结束后执行
        }];
        }
    

    上面就是实现文件里面的核心部分了,其实就是播放动画。

    写在最后


    第一次尝试着写这样的自定义类,封装也花了不少时间。
    最后做出了项目需要的效果,也是感慨。
    至于源代码,找到合适的地方之后就会放出,反正这么简单的东西。大牛都表示一看就知道怎么弄了!

    相关文章

      网友评论

          本文标题:自定义消息提醒-AlertMessage

          本文链接:https://www.haomeiwen.com/subject/dnjdxttx.html