[置顶] Objective-C ,ios,iphone开发基础:Category(分类,类别,范畴) ,UINavigationBar设置背景图片适配

发布时间:2014-10-23 23:30:57
来源:分享查询网

在objective-c中没有多继承,而objective-c中的Category 和 代理委托弥补了这一缺陷, 可能在刚开始学习的时候并不知道在什么地方使用,时间久了可能都忘记怎么来写了,在最近做IOS适配的时候发现在IOS5.0 以下没法设置导航栏也就是 UINavigationBar的背景图片,要向设置图片,只有往UINavigationBar上画一张图片,但是在5.0以上又有setBackgroundImage的方法设置背景图片,所以这个时候我们用分类来解决有和没有setBackgroundImage方法的问题就比较合理,我们这个分类category就用到了设计模式当中的适配器模式,(就是把旧的接口和新的接口组合在一起,形成一个新的接口)。 为UINavigationBar新建一个分类,代码如下: #import <UIKit/UIKit.h> @interface UINavigationBar (SetBackgroundImage) -(void)SetBackgroundImage; @end 实现文件 #import "UINavigationBar+SetBackgroundImage.h" @implementation UINavigationBar (SetBackgroundImage) -(void)SetBackgroundImage{     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) {          [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nv_bg.jpg"] forBarMetrics:UIBarMetricsDefault];     }else{         UIImage *image = [UIImage imageNamed: @"nv_bg.jpg"];            [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];      } } @end

返回顶部
查看电脑版