29,027
社区成员
发帖
与我相关
我的任务
分享
CGContextRef context = CGBitmapContextCreate(NULL, self.bounds.size.width, self.bounds.size.height, 8, 4 * self.bounds.size.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst);
CGContextAddArc(context, 1024/2, 768/2, size, 0, 6.3, 0);
CGContextClosePath(context);
CGContextClip(context);
CGContextDrawImage(context, self.bounds, imageView.image.CGImage);
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
UIImage *newImage = [UIImage imageWithCGImage:imageMasked];
CGImageRelease(imageMasked);
[imageView setImage:newImage];
UIGraphicsEndImageContext();
- (IBAction)minus:(id)sender {
self.radius = @([self.radius floatValue]+10.0f);
[self redrawImage];
}
- (IBAction)plus:(id)sender {
self.radius = @([self.radius floatValue]-10.0f);
[self redrawImage];
}
-(void)redrawImage
{
//set the original image first
[_imageView setImage:[UIImage imageNamed:@"your image goes here"]];
CGFloat size = [self.radius floatValue];
CGContextRef context = CGBitmapContextCreate(NULL, self.view.bounds.size.width, self.view.bounds.size.height, 8, 4 * self.view.bounds.size.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst);
CGContextAddArc(context, 320/2, 460/2, size, 0, 2*M_PI, 0);
CGContextClosePath(context);
CGContextClip(context);
CGContextDrawImage(context, self.view.bounds, _imageView.image.CGImage);
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
UIImage *newImage = [UIImage imageWithCGImage:imageMasked];
CGImageRelease(imageMasked);
[_imageView setImage:newImage];
UIGraphicsEndImageContext();
}
- (void)drawRect:(CGRect)rect
{
// Drawing code
if (self.image != nil && ![self.image isEqual:[NSNull null]]) {
CGRect imgRect = originalFrame;//originalBounds;
imgRect.origin = CGPointMake(shadowWidth * 2, shadowWidth * 2);
CGContextRef context = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [CYInfo screenScale]);
CGContextRef imgContext = UIGraphicsGetCurrentContext();
CGPathRef clippingPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(imgRect.size.width / 2, imgRect.size.height / 2) radius:self.cornerRadius - 2 startAngle:0.0 endAngle:360 clockwise:YES].CGPath; //bezierPathWithRoundedRect:imgRect cornerRadius:self.cornerRadius].CGPath;
CGContextAddPath(imgContext, clippingPath);
CGContextClip(imgContext);
[image drawInRect:imgRect];
UIImage *currentContextImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (shadowWidth > 0.0) {
CGContextSetShadowWithColor(context, shadowOffset, shadowBlur, self.shadowColor.CGColor);
}
[currentContextImage drawInRect:self.bounds];
}
}
#import <QuartzCore/QuartzCore.h>
imageView.layer.cornerRadius = imageView.frame.size.width/2;
imageView.layer.masksToBounds = YES;
#import <QuartzCore/QuartzCore.h>
// ...
[image.layer setCornerRadius:17];
[image.layer setMasksToBounds:TRUE];