在状态栏上做渐变动画效果

效果

说明

1. 在状态栏上显示信息并覆盖状态栏信息需要技巧

2. 本设计支持外部消息view的定制,只需要实现规定的协议方法即可

源码

https://github.com/YouXianMing/StatusBarMessage

//
//  StatusMessage.h
//  StatusBarView
//
//  Created by YouXianMing on 15/7/24.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "StatusMessageProtocol.h"

@interface StatusMessage : UIView

/**
 *  显示加载的view
 *
 *  @param view     实现了StatusMessageProtocol的view
 *  @param duration 动画显示时间
 */
+ (void)showWithView:(UIView <StatusMessageProtocol> *)view duration:(NSTimeInterval)duration;

/**
 *  隐藏加载的view
 *
 *  @param duration 隐藏动画显示时间
 */
+ (void)hideWithDuration:(NSTimeInterval)duration;

///////////////////////////////////////////////////////////////////////////////////////////////////

/**
 *  设置显示以及隐藏的动画时间(不设置,默认为1s)
 *
 *  @param duration 动画时间
 */
+ (void)showAndHideDuration:(NSTimeInterval)duration;

/**
 *  显示view,然后几秒后隐藏
 *
 *  @param view    实现了StatusMessageProtocol的view
 *  @param seconds 延时几秒后隐藏
 */
+ (void)showWithView:(UIView<StatusMessageProtocol> *)view hideAfterSeconds:(NSTimeInterval)seconds;

@end
//
//  StatusMessage.m
//  StatusBarView
//
//  Created by YouXianMing on 15/7/24.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "StatusMessage.h"

#define  Status_Message  @"StatusMessage"

static UIWindow        *_statusWindow      = nil;
static NSMapTable      *_weakDictionary    = nil;
static NSTimeInterval   _animationDuration = 1.f;

@implementation StatusMessage

+ (void)initialize {

    if (self == [StatusMessage class]) {

        _weakDictionary = [NSMapTable strongToWeakObjectsMapTable];

        _statusWindow                        = [[UIWindow alloc] initWithFrame:STATUS_BAR_FRAME];
        _statusWindow.windowLevel            = UIWindowLevelStatusBar + 1;
        _statusWindow.userInteractionEnabled = NO;
        [_statusWindow makeKeyAndVisible];
    }
}

+ (void)showWithView:(UIView <StatusMessageProtocol> *)view duration:(NSTimeInterval)duration {

    [_weakDictionary setObject:view forKey:Status_Message];
    [_statusWindow addSubview:view];
    [view showWithDuration:duration];
}

+ (void)hideWithDuration:(NSTimeInterval)duration {

    UIView <StatusMessageProtocol> *tmpView = [_weakDictionary objectForKey:Status_Message];
    [tmpView hideWithDuration:duration];
}

+ (void)showAndHideDuration:(NSTimeInterval)duration {

    _animationDuration = duration;
}

+ (void)showWithView:(UIView<StatusMessageProtocol> *)view hideAfterSeconds:(NSTimeInterval)seconds {

    [_weakDictionary setObject:view forKey:Status_Message];
    [_statusWindow addSubview:view];
    [view showWithDuration:_animationDuration];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

        UIView <StatusMessageProtocol> *tmpView = [_weakDictionary objectForKey:Status_Message];
        [tmpView hideWithDuration:_animationDuration];
    });
}

@end
//
//  StatusMessageProtocol.h
//  StatusBarView
//
//  Created by YouXianMing on 15/7/24.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 *  状态栏的frame值
 */
#define  STATUS_BAR_FRAME  [[UIApplication sharedApplication] statusBarFrame]

@protocol StatusMessageProtocol <NSObject>

@required
/**
 *  显示动画
 *
 *  @param seconds 显示持续时间
 */
- (void)showWithDuration:(NSTimeInterval)seconds;

/**
 *  隐藏动画(隐藏动画的时候请移除掉自己)
 *
 *  @param seconds 隐藏持续时间
 */
- (void)hideWithDuration:(NSTimeInterval)seconds;

@end
时间: 2024-08-07 08:39:47

在状态栏上做渐变动画效果的相关文章

弹出输入文本框上弹的动画效果

先看以下简单的模型图片效果,有图才有真相: 软键盘弹出效果: 终极效果实现: 效果呢就是这样: 简单解释一下:由于显示页面要承载很多的信息内容,所以在让用户发布动态的时候,要求从页面的底部以动画的方式向上抽出.当弹出软键盘输入法的时候,要避免输入框被全部遮挡或者部分遮挡.则,软键盘要把输入文本框顶起来,完全的托起来. 那么,就要完成这几步骤: 1,在该页面的类中(Actiivty或者fragment),在加载该布局之前添加这句话,其作用是使文本框根据软键盘弹出自动调节位置和大小: getWind

css3实现文字渐变动画效果

利用css3这个属性(背景剪裁): background-clip: border-box || padding-box || context-box || no-clip || text 本次用到的就是: -webkit-background-clip:text; 栗子: 1. <style> .masked{ text-align: center; background-image: -webkit-linear-gradient(left, #147B96, #E6D205 25%, #

swift-教你如何实现导航上的UISearchController动画效果。

这个代码片段是我这周我从网上找了各种资料然后经过自己的修改终于弄好了导航的上下动画效果: step1:==>因为这个搜索要有动画效果,所以这个页面必须要有一个导航控制器: //1.自定义创建导航控制器 这个页面我是从其他页面跳转过来的,跳转之前我自定义了一个导航控制器: let actionSearchTable=searchTable(); let navVC = UINavigationController(rootViewController: actionSearchTable); na

router 返回上一页+动画效果

Router.prototype.goBack = function () { this.isBack = true this.go(-1) } 监听路由变化 beforeRouteUpdate (to, from, next) { // 如果isBack为true时,证明是用户点击了回退,执行slide-right动画 let isBack = this.$router.isBack if (isBack) { this.transitionName = 'slide-right' } els

transition属性实现hover渐变动画效果

transition:颜色 变换延续的时间 变换速率 transition:background-color 0.3s linear 变换速率: 1.ease:(逐渐变慢)默认值,ease函数等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0). 2.linear:(匀速),linear 函数等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0). 3.ease-in:(加速),ease-in 函数等同于贝塞尔曲线(0.42, 0, 1.0, 1.0). 4.ease-out:(减速)

从下往上飞入的动画效果

<?xml version="1.0" encoding="utf-8"?> <translate  xmlns:android="http://schemas.android.com/apk/res/android"         android:duration="1200"        android:fromYDelta="110%p"           android:to

iOS的GIF动画效果实现

引言:GIF图像格式是常见的一种动态图片格式,无论是在Web端还是在移动端都经常遇到,但是考虑目前iOS还无法原生展现GIF图片,而对于GIF的原生支持暂时也没有像JPG.PNG等图像格式支持得这么全面,因此本文从图片的合成与分解角度来为大家讲解GIF的知识,结合ImageIO框架可以更方便地实现GIF图片的合成与分解. 本文选自<iOS动画--核心技术与案例实战>. GIF在iOS中的使用场景 GIF在iOS中的使用场景有以下三个方面. (1)GIF图片分解为单帧图片. (2)一系列单帧图片

动画特效八:渐变动画

本节将为大家介绍的动画效果是渐变动画效果.其实这个例子,大家天天能够看到,就是手机屏幕锁定是,有一句"滑动来解锁"的文字,它上面有一种渐变的动画一直在其上面走过.先看看最终的效果图. 思路分析: 1.  普通UIView不可能有这样的渐变效果,所以我们应该自定义一个UIView来实现这样的效果. 2.  普通UIView没有这样的渐变动画,所以我们可以考虑使用图层动画,并且将渐变图层添加到自定义的UIView的layer上面. 3. 渐变效果只是颜色值的过度,并没有设计到文字.所以,我

CSS动画效果的回调

用纯JS实现动画效果代码量大,计算复杂.因此现在前端页面的动画效果一般都采用CSS来实现. CSS动画实现简单高效,但是在处理动画,控制动画过程上却缺少一些有效手段. 例如我们想在动画效果完成时调用回调函数来处理一些事务,会发现CSS并没有提供直接的方法来让我们使用. 一.css动画简介 css动画效果有两种,即过渡和动画. 1.过渡 当元素从一种样式转变为另一种样式,我们为这种转变添加动画效果,这种效果就称作过渡. CSS的过渡是通过 transtion 属性实现的. transtion属性必