Adding blur effect on the view's corner
User interface play an important role in development of a good application. With the useful and important features, it is necessity of a application to make a attractive and good looking user interface. A well design interface force user to play with application and enjoy the application for a time being.
A small small effect can make the interface better like presenting sub-view with animation or bounce, adding blur effect in the corner of sub-views.
Here i am going to add blur effect in the corner of sub views.
We can achieve blur effect by using gradient. We are having in-build CAGraientLayer in iOS, so its not a tough to add blur effect in both corner of a view, because of this CAGraientLayer.
Click here for details of CAGraientLayer.
First create a project and add a UIView as a subview of view in the storyboard or xib file.
Than go to .h file and create a outlet for added UIView.
@property (nonatomic, weak) IBOutlet UIView *horizontalLineViewFirst;
again go to storyboard or xib file and connect the outlet to added UIView.
Now switch to .m file and add a method
#pragma mark - Add Gradient
-(void) addGrandientlayerToView:(UIView *)gradientView{
//create a gradient layer
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
//set gradient color
CGColorRef outerColor = [[UIColor colorWithWhite:0.97 alpha:1.0] CGColor];
CGColorRef innerColor = [[UIColor colorWithWhite:0.72 alpha:0.0] CGColor];
//set name of the layer
gradientLayer.name = @"BlurGradientLayer";
//set color to gradien layer
gradientLayer.colors = [NSArray arrayWithObjects:(__bridge id)outerColor,(__bridge id)innerColor,(__bridge id)innerColor,(__bridge id)outerColor, nil];
//set location to each color
gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],[NSNumber numberWithFloat:0.200],[NSNumber numberWithFloat:0.710],[NSNumber numberWithFloat:1.0], nil];
//set start point for draw a gradient layer
[gradientLayer setStartPoint:CGPointMake(0, 0.6)];
//set start point for draw a gradient layer
[gradientLayer setEndPoint:CGPointMake(1, 0.6)];
//set bound of the layer
gradientLayer.bounds = gradientView.bounds;
//set anchor point of layer to {0,0}
gradientLayer.anchorPoint = CGPointZero;
[gradientView.layer addSublayer:gradientLayer];
}
pass the message to above method form viewDidLoad method
[self addGrandientlayerToView:self.horizontalLineViewFirst];
Run the app, we can see a blur effect on added subview.
We can see a effect similar to above image a horizontal line with blur corners.
Now rotate the simulator or device, one side of blur effect get misplace,its come in the middle not in both corners. Lets fix the issue
add another method to reset gradient location after orientation
#pragma mark -
#pragma mark Handle Orientation
- (void) handleOrientationChange:(NSNotification *)notification{
[self resetAllGradientLayer];
}
-(void) resetAllGradientLayer{
[self resetGradientforView:self.horizontalLineViewFirst];
}
-(void) resetGradientforView:(UIView *)gradientView{
for (CAGradientLayer *layer in gradientView.layer.sublayers){
if ([layer.name isEqualToString:@"BlurGradientLayer"]) {
layer.bounds = gradientView.bounds;
}
}
}
Add orientation change notification to controller
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOrientationChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
Now again run the application and check.
Click here for complete project.
User interface play an important role in development of a good application. With the useful and important features, it is necessity of a application to make a attractive and good looking user interface. A well design interface force user to play with application and enjoy the application for a time being.
A small small effect can make the interface better like presenting sub-view with animation or bounce, adding blur effect in the corner of sub-views.
Here i am going to add blur effect in the corner of sub views.
We can achieve blur effect by using gradient. We are having in-build CAGraientLayer in iOS, so its not a tough to add blur effect in both corner of a view, because of this CAGraientLayer.
Click here for details of CAGraientLayer.
First create a project and add a UIView as a subview of view in the storyboard or xib file.
Than go to .h file and create a outlet for added UIView.
@property (nonatomic, weak) IBOutlet UIView *horizontalLineViewFirst;
again go to storyboard or xib file and connect the outlet to added UIView.
Now switch to .m file and add a method
#pragma mark - Add Gradient
-(void) addGrandientlayerToView:(UIView *)gradientView{
//create a gradient layer
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
//set gradient color
CGColorRef outerColor = [[UIColor colorWithWhite:0.97 alpha:1.0] CGColor];
CGColorRef innerColor = [[UIColor colorWithWhite:0.72 alpha:0.0] CGColor];
//set name of the layer
gradientLayer.name = @"BlurGradientLayer";
//set color to gradien layer
gradientLayer.colors = [NSArray arrayWithObjects:(__bridge id)outerColor,(__bridge id)innerColor,(__bridge id)innerColor,(__bridge id)outerColor, nil];
//set location to each color
gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],[NSNumber numberWithFloat:0.200],[NSNumber numberWithFloat:0.710],[NSNumber numberWithFloat:1.0], nil];
//set start point for draw a gradient layer
[gradientLayer setStartPoint:CGPointMake(0, 0.6)];
//set start point for draw a gradient layer
[gradientLayer setEndPoint:CGPointMake(1, 0.6)];
//set bound of the layer
gradientLayer.bounds = gradientView.bounds;
//set anchor point of layer to {0,0}
gradientLayer.anchorPoint = CGPointZero;
[gradientView.layer addSublayer:gradientLayer];
}
pass the message to above method form viewDidLoad method
[self addGrandientlayerToView:self.horizontalLineViewFirst];
Run the app, we can see a blur effect on added subview.
Now rotate the simulator or device, one side of blur effect get misplace,its come in the middle not in both corners. Lets fix the issue
add another method to reset gradient location after orientation
#pragma mark -
#pragma mark Handle Orientation
- (void) handleOrientationChange:(NSNotification *)notification{
[self resetAllGradientLayer];
}
-(void) resetAllGradientLayer{
[self resetGradientforView:self.horizontalLineViewFirst];
}
-(void) resetGradientforView:(UIView *)gradientView{
for (CAGradientLayer *layer in gradientView.layer.sublayers){
if ([layer.name isEqualToString:@"BlurGradientLayer"]) {
layer.bounds = gradientView.bounds;
}
}
}
Add orientation change notification to controller
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOrientationChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
Now again run the application and check.
Click here for complete project.

No comments:
Post a Comment