图片圆角iPhone development – UIImage with round corners
来源:互联网 发布:汇率分析软件 编辑:程序博客网 时间:2024/05/20 02:27
I recently dwelled into the world of Cocoa programing for the iPhone a few weeks back. My good friend and collegue at Avantime, Hampus, and I bought iPhones 3G when we were on vaccation in Italy this summer. Italy sells unlocked iPhones so we’re not stuck with using Telia which is the only Swedish operator who carry iPhone. I actually had a quick look at iPhone development when the first iPhone came out using the toolchain but I didn’t really enjoy it at the time, perhaps it’s because I only owned an iPod touch at the time.
Anyhow. Hampus and I have been hacking away on our first iPhone app and I thought I’d share some usefull code for rounding off corners of an UIImage. This code is based on various stuff I found on google but I made a nice image manipulation class which rounds of corners:
ImageManipulation.h
#import @interface ImageManipulator : NSObject {}+(UIImage *)makeRoundCornerImage:(UIImage*)img :(int) cornerWidth :(int) cornerHeight;@end
ImageManipulation.m
#import "ImageManipulator.h" @implementation ImageManipulator static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight){ float fw, fh; if (ovalWidth == 0 || ovalHeight == 0) { CGContextAddRect(context, rect); return; } CGContextSaveGState(context); CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect)); CGContextScaleCTM (context, ovalWidth, ovalHeight); fw = CGRectGetWidth (rect) / ovalWidth; fh = CGRectGetHeight (rect) / ovalHeight; CGContextMoveToPoint(context, fw, fh/2); CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); CGContextClosePath(context); CGContextRestoreGState(context);} +(UIImage *)makeRoundCornerImage : (UIImage*) img : (int) cornerWidth : (int) cornerHeight{UIImage * newImage = nil; if( nil != img){NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];int w = img.size.width;int h = img.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); CGContextBeginPath(context);CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);addRoundedRectToPath(context, rect, cornerWidth, cornerHeight);CGContextClosePath(context);CGContextClip(context); CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); CGImageRef imageMasked = CGBitmapContextCreateImage(context);CGContextRelease(context);CGColorSpaceRelease(colorSpace);[img release]; newImage = [[UIImage imageWithCGImage:imageMasked] retain];CGImageRelease(imageMasked); [pool release];} return newImage;} @end
Just call the static method makeRoundCornerImage and pass your image to have the image rounded off the way you want.
Note that you do need the CoreGraphics framework for this to compile. By request I’ve also whipped up a small demo of how to use this. If you don’t like to copy-paste code you can grab the class files from the demo.
地址:http://blog.sallarp.com/iphone-uiimage-round-corners/
- 图片圆角iPhone development – UIImage with round corners
- iphone--UIImage图片拉伸
- iphone缩小uIImage图片
- iphone缩小uIImage图片
- CSS and Round Corners: Build Boxes with Curves
- iphone开发 UIImage图片的缩放、拉伸
- iPhone开发应用UIImage图片对象操作
- NSWindow with rounded corners
- [IOS] UIImage创建圆角图片
- Iphone UIImage
- Round two corners in UIView
- iPhone Read UIimage (frames) from video with AVFoundation
- create rounded corners with CSS
- Beginning iPhone Development with Swift Exploring the iOS SDK 源代码
- More iPhone Development with Swift.pdf 英文原版 免费下载
- iPhone图片UIImage对象操作的一些方法
- swift UIImage加载远程图片和圆角矩形
- 给UIImage添加生成圆角图片的扩展API:
- 获取manifest里边meta-data 的name对应的value
- SQL 时间条件查询
- 从现在起,做一个踏实的程序员!
- Effective Objective-C(第23-28条)类别、协议,代理,匿名对象、delegate
- UVA 11324 The Largest Clique (强连通分量+缩点+dp)
- 图片圆角iPhone development – UIImage with round corners
- DelphiXE下的字符串变化
- DPDK简单介绍
- C++——宏观了解
- 异常值探测的相关理论及方法
- cocos2d-x入门视频教程[第七讲更新]
- 对TCP/IP的浅显理解
- 有关Flappy的实现(基本功能已经实现, 但用户体验不是很好,希望各位批评指正)
- 机顶盒Demux专项培训