代码改变世界

iOS自定义图片拉伸和iOS6,7图片适配

2014-09-20 12:58  苑哲雨  阅读(191)  评论(0)    收藏  举报

新建一个UIImage的类的扩展,命名为:UIImage+YLY

类的扩展在不改变本身系统类的基础上进行自定义的扩展,使用方便,而且容易区分与系统的类的方法

1.在.h文件中添加如下代码:

#import <UIKit/UIKit.h>

@interface UIImage (YLY)
/**
 *  加载项目中的所有图片
 *
 *  @param name 文件名
 *
 *  @return 一个新的图片对象
 */
+(UIImage *)imageWithNamed:(NSString *)name;

/**
 *  返回能够自由拉伸的不变形的图片
 *
 *  @param name 文件名
 *
 *  @return 图片
 */
+ (UIImage *)resizedImage:(NSString *)name;
@end

 2.在.m中添加如下代码

#import "UIImage+YLY.h"

@implementation UIImage (YLY)

#pragma mark image类的扩展
+(UIImage *)imageWithNamed:(NSString *)name
{
    if (iOS7) {
        NSString *newName = [name stringByAppendingString:@"_os7"];
        UIImage *image = [self imageNamed:newName];
        //判断加载图片名称
        if (image == nil) {
            image = [self imageNamed:name];
        }
         return image;
    }else
    {
        return [self imageNamed:name];
    }
}
//这个方法是防止图片拉伸
+(UIImage *)resizedImage:(NSString *)name
{
    UIImage *image = [UIImage imageWithNamed:name];
    //防止图片拉伸
    return [image stretchableImageWithLeftCapWidth:image.size.width*0.5 topCapHeight:image.size.height*0.5];
}

@end
注释:代码中的iOS7是宏定义,做了iOS6和iOS7的适配

使用的时候就可以直接用扩展的类方法了

UIImage *selected = [UIImage imageWithNamed:selectedImage];

自定义搜索栏调用防止图片拉伸的方法

YLYSearchBar *search = [[YLYSearchBar alloc] init];
    search.bounds = CGRectMake(0, 0, 300, 30);
    self.navigationItem.titleView = search;