自定义状态栏,首先需要隐藏系统的statusbar然后重新显示一个window即可
然后需要显示的内容直接显示在 window上即可
注意window是不需要添加到一个 view上的,
直接上代码,可以直接使用:
//
// CustomStatusBar.h // CustomStatusBar // // Created by on 14/10/24. // Copyright (c) 2014年 All rights reserved. // #import <UIKit/UIKit.h> @interface CustomStatusBar : UIWindow - (void)showStatusMessage:(NSString *)message; - (void)hideStatusBarWhenSendFinished; -(void)hideStatusBarWhenSendFailed; @end // // CustomStatusBar.m // CustomStatusBar // // Created by on 14/10/24. // Copyright (c) 2014年 . All rights reserved. // #import "CustomStatusBar.h" @interface CustomStatusBar () @property(strong,nonatomic)UILabel *messageLabel; @end @implementation CustomStatusBar - (instancetype)init { self = [super init]; if (self) { self.frame=[UIApplication sharedApplication].statusBarFrame; self.backgroundColor=[UIColor blackColor]; self.windowLevel=UIWindowLevelStatusBar+1.0f; self.messageLabel=[[UILabel alloc]initWithFrame:self.bounds]; self.messageLabel.textColor=[UIColor whiteColor]; self.messageLabel.textAlignment=NSTextAlignmentCenter; [self addSubview:_messageLabel]; } return self; } - (void)showStatusMessage:(NSString *)message { self.hidden = NO; self.alpha = 1.0f; self.frame=[UIApplication sharedApplication].statusBarFrame; self.messageLabel.frame=self.bounds; CGSize totalSize = self.frame.size; self.frame = (CGRect){ self.frame.origin, 0, totalSize.height }; [UIView animateWithDuration:0.5f animations:^{ self.frame = (CGRect){ self.frame.origin, totalSize }; self.messageLabel.text = message; } completion:^(BOOL finished) { }]; } - (void)hideStatusBarWhenSendFinished { self.alpha = 1.0f; [UIView animateWithDuration:2.0f animations:^ { self.alpha = 0.0f; CGRect frame=self.frame; frame.size.height=0; self.frame=frame; self.messageLabel.text=@"发送成功!"; } completion:^(BOOL finished){ self.frame=CGRectZero; self.hidden = YES; }];; } -(void)hideStatusBarWhenSendFailed { self.alpha = 1.0f; [UIView animateWithDuration:2.0f animations:^ { self.alpha = 0.0f; CGRect frame=self.frame; frame.size.height=0; self.frame=frame; self.messageLabel.text=@"发送失败!"; } completion:^(BOOL finished){ self.frame=CGRectZero; self.hidden = YES; }];; } @end
原文地址:原文地址:http://blog.csdn.net/yangbingbinga