Sunday, March 30, 2014

Creating rounded ImageView in iOS app development

Implement CirclularLayer will form a rounded image  view



#import <QuartzCore/QuartzCore.h>

@interface CirclularLayer : CALayer
-(id)initWithImage:(NSString*)image WithFrame:(CGRect)frame;


@end


//
//  CirclularLayer.m
//  ImageViewFrameSample
//
//  Created by Mayu on 3/31/14.
//  Copyright (c) 2014 NCS. All rights reserved.
//

#import "CirclularLayer.h"

@implementation CirclularLayer

-(id)initWithImage:(NSString*)image WithFrame:(CGRect)frame{
    
    self=[super init];
    if (self) {
        
        self.cornerRadius = 16.0;
     
        self.borderWidth=4.0;
        self.borderColor = [UIColor darkGrayColor].CGColor;
        
        float heightOfImageLayer  = (CGFloat)frame.size.height;
        float widthOfImageLayer  = (CGFloat)frame.size.width;

        heightOfImageLayer = floorf(heightOfImageLayer);
        widthOfImageLayer=floorf(widthOfImageLayer);
        self.cornerRadius = heightOfImageLayer/2.0f;
        self.frame = CGRectMake(frame.origin.x, frame.origin.y, heightOfImageLayer, heightOfImageLayer);
        
        
        [CATransaction begin];
        [CATransaction setAnimationDuration:0];
        self.contents = (id)[self getImage:[UIImage imageNamed:image]].CGImage;
        [CATransaction commit];
        
        
    }
    
    return self;
}

-(UIImage*)getImage:(UIImage*)image{
    
    UIImage *finalImage = nil;
    UIGraphicsBeginImageContext(image.size);
    {
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGAffineTransform trnsfrm = CGAffineTransformConcat(CGAffineTransformIdentity, CGAffineTransformMakeScale(1.0, -1.0));
        trnsfrm = CGAffineTransformConcat(trnsfrm, CGAffineTransformMakeTranslation(0.0, image.size.height));
        CGContextConcatCTM(ctx, trnsfrm);
        CGContextBeginPath(ctx);
        CGContextAddEllipseInRect(ctx, CGRectMake(0.0, 0.0, image.size.width, image.size.height));
        CGContextClip(ctx);
        CGContextDrawImage(ctx, CGRectMake(0.0, 0.0, image.size.width, image.size.height), image.CGImage);
        finalImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    
    
    return finalImage;
    
}




@end

No comments:

Post a Comment