一、接下来,我们来说这个设置图片 1.现在是没有图片的,全是红色,怎么给它设置图片, 看一下素材, 是一张大图,怎么给它切割一下, 还有一张图片,是Pressed情况,是黄色的, 图片的大小、内容都是一样的、 我们这个示例程序里边,你选中了以后,是黄色的, 默认的情况,是红色的, 后面这个选中的红色,是这个按钮的背景图片,setBackgroundImage,这个文字,是这个btn的内容图片,setImage, 这是两个东西啊, 2.我们先来设置这个文字图片啊,背景之后再来说,那个简单, 设置这个图片,它本身是一张大图,我们要给它切一下才行, 我们先写一个方法,专门用来切图片, 这个方法是:我传过来一张大图片,返回的是一张小图片, 那么,我传过来,还需要一个参数,就是i, 我们要根据它的i,计算frame,切哪一部分,切哪一个Rect, 我们切的第一个,首先,它的x,是多少, x = 0, y = 0, w = 图片的宽 / 12, h = 图片的高, 然后呢,第二个, x = w , y = 0, w = 图片的宽 / 12, h = 图片的高, 然后呢,第i个, x = w * i, y = 0, w = 图片的宽 / 12, h = 图片的高, 我们先来写一个方法: // 根据大图 切割出来一部分图片 - (UIImage *)clipImageWithImage:(UIImage *)image withIndex:(NSInteger) index{ } 然后呢,在这个里边,我们来切,怎么来切,这个里边,有一个方法,叫做CGImageCreateImageInRect(CGImageRef image,CGRect rect) CGImageCreateWithImageInRect(CGImageRef image,CGRect rect) 输入两个参数: 1)CGImageRef image:你把大图的CGImage给我,再给我一个Rect,那么,我就能够去给你返回一个切好的CGImage, 然后,我们再把这个CGImage,转化成一个UIImage的类型,返回就可以了, 第一个参数:CGImageRef image:直接把大图传过来,来一个image.CGImage,它要的是一个CGImage的类型, 2)CGRect rect:计算一下Rect, // 计算rect CGFloat w; 我们先拿CGImageRef imageRef接一下吧, CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage,CGRect rect); return imageRef 我们要返回的是一个UIImage,怎么从CGImageRef,转化成UIImage, 实际上,跟BezierPath一样啊,我们说,bezierPath,类方法, bezierPathWithCGPath, imageWithCGImage, image也是一样啊,imageWithCGImage, 哦,先得alloc一下啊, return [[UIImage alloc] initWithCGImage:(CGImageRef)]; return [[UIImage alloc] initWithCGImage:(CGImageRef)]; 把这个imageRef传过来,就搞定了, 接下来,我们去计算rect, 1)宽w = image.size.width / 12; 2)高h = image.size.height;