重新设置navigtionbar的透明度和颜色的方法
2016-01-14 17:42
288 查看
#import <UIKit/UIKit.h> @interface UINavigationBar (Alpha) /** * 重新设置navigtionbar的透明度 */ - (void)lt_setBackgroundColor:(UIColor *)backgroundColor; - (void)lt_setContentAlpha:(CGFloat)alpha; - (UIStatusBarStyle)preferredStatusBarStyle; @end
#import "UINavigationBar+Alpha.h" #import <objc/runtime.h> //关联时创建一个静态的关键字 static char overlayKey; static char emptyImageKey; @implementation UINavigationBar (Alpha) -(UIView *)overlay; { //获取被关联对象 return objc_getAssociatedObject(self,&overlayKey); } - (void)setOverlay:(UIView *)overlay { //为navigation关联一个view对象 objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (UIImage *)emptyImage { return objc_getAssociatedObject(self, &emptyImageKey); } - (void)setEmptyImage:(UIImage *)image { objc_setAssociatedObject(self, &emptyImageKey, image, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (void)lt_setBackgroundColor:(UIColor *)backgroundColor { if (!self.overlay) { [self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self setShadowImage:[UIImage new]]; self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, 64)]; self.overlay.userInteractionEnabled = NO; self.overlay.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; [self insertSubview:self.overlay atIndex:0]; } self.overlay.backgroundColor = backgroundColor; } - (void)setAlpha:(CGFloat)alpha forSubviewsOfView:(UIView *)view { for (UIView *subview in view.subviews) { if (subview == self.overlay) { continue; } subview.alpha = alpha; [self setAlpha:alpha forSubviewsOfView:subview]; } } - (void)lt_setContentAlpha:(CGFloat)alpha { if (!self.overlay) { [self lt_setBackgroundColor:self.barTintColor]; } [self setAlpha:alpha forSubviewsOfView:self]; if (alpha == 1) { if (!self.emptyImage) { self.emptyImage = [UIImage new]; } self.backIndicatorImage = self.emptyImage; } } //statusBar设置成白色 - (UIStatusBarStyle)preferredStatusBarStyle { //also you may add any fancy condition-based code here return UIStatusBarStyleLightContent; }
相关文章推荐
- 在使用supervisord 管理tomcat时遇到的小问题
- spring定时任务
- 关于VS2013代码自动折叠的问题
- php大牛高老师免费收徒
- java -jar 与nohup的区别
- EM及高斯混合模型
- symfony2中有规律的动态路由
- 多线程参数传递
- easyui DataGrid 工具类之 后台生成列
- APICloud:让开发移动应用像拼积木一样简单
- each方法应用(列表-json数据展示)
- 【matconvnet】故障排除:Error using mex nvcc fatal : Unsupported gpu architecture 'compute_52'
- 搭配Android Studio的新工具,完虐自带模拟机型
- 实现Android插件化的核心技术简介(二):Android dynamic load resources
- 计算图像均值
- struts2 中,@NameSpace 和 @Action 的使用示例
- 正方形字符串
- maven引入本地JAR包
- 蓝懿IOS新控件UIDateSpickers/UIAlertController
- windows2003+SQL server2005群集-故障转移