iOS SDK - CoreAnimation, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реБрдВрджрд░ рдмрдЯрди

рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдВрднрд╡рддрдГ рдореЛрдмрд╛рдЗрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдорд╛рдирдХ UIButton рдмрдЯрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рдорд╛рдВрдЧ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдХреНрд╕рд░ рдПрдХ рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдмрдЯрди рдкрд░ рд╕реНрдерд┐рддрд┐ рдмрд┐рдЯрдореИрдк рдХреЛ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИред рдЪрд╛рд╣реЗ рд╡рд╣ рд╕реНрдЯреНрд░реЗрдЪ рдХреА рдЧрдИ рддрд╕реНрд╡реАрд░ рд╣реЛ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдЯ рдЖрдЙрдЯ рдмрдЯрди, рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдЬрд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореВрд▓ рдпреВрдЖрдИрдпреВрдЯрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рджреГрд╢реНрдп рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред





рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ UIButton рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрддрд╛ рд╣реИ - рдФрд░ рд╣рдо рдХрд░реЗрдВрдЧреЗ

рд╣рдо UIButton рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ QuartzCore.framework рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ), рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП iOS vizulka рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд░рд╣рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред



@class CAGradientLayer;



@interface CustomButton : UIButton {

@private

UIColor* _gradientStartColor;

UIColor* _gradientEndColor;



CAGradientLayer* _gradientLayer;

}



@property (nonatomic, retain) UIColor* gradientStartColor;

@property (nonatomic, retain) UIColor* gradientEndColor;



@end









рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рд▓реЛрдЧ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рд╣рдо CAGradientLayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдЯрди рдХреА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд░реНрдЧ рд╕рдореГрджреНрдз рднрд░рдг рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреЗ (рдореВрд▓) рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред



#import "CustomButton.h"

#import <QuartzCore/QuartzCore.h>



@implementation CustomButton



@synthesize gradientStartColor = _gradientStartColor;

@synthesize gradientEndColor = _gradientEndColor;









рдЪреВрдБрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдЯрд░рдлреЗрд╕рдмрд░реНрд╕реНрдЯ (рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдИрдмреА) рдореЗрдВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдиреАрдЪреЗ рджреА рдЧрдИ рд╡рд┐рдзрд┐ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП



-(void)awakeFromNib;

{

_gradientLayer = [[CAGradientLayer alloc] init];

_gradientLayer.bounds = self.bounds;



_gradientLayer.position = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2);



[self.layer insertSublayer:_gradientLayer atIndex:0];



self.layer.cornerRadius = 5.0f; // ,

self.layer.masksToBounds = YES;

self.layer.borderWidth = 1.0f;



}









рдврд╛рд▓ рдкрд░рдд рдбреНрд░рд╛рдЗрдВрдЧ



- (void)drawRect:(CGRect)rect;

{

if (_gradientStartColor && _gradientEndColor)

{

[_gradientLayer setColors:

[NSArray arrayWithObjects: (id)[_gradientStartColor CGColor]

, (id)[_gradientEndColor CGColor], nil]];

}



[super drawRect:rect];

}









рдХреНрдпрд╛ рд╣рдо рдХреБрдЫ рднреВрд▓ рдЧрдП рд╣реИрдВ?



- (void)dealloc {

[_gradientEndColor release];

[_gradientStartColor release];

[_gradientLayer release];

[super dealloc];

}



@end








рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдХреНрд▓рд╛рд╕рдореИрди рдФрд░ zameplmeneny рд╣реИрдВ, рдЖрдЗрдП рдЗрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред



рдХрдВрдЯреНрд░реЛрд▓рд░ (CustomButton) рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЖрдЙрдЯрд▓реЗрдЯ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдБ



@interface GlossyButtonTestViewController : UIViewController {

@private

IBOutlet CustomButton* btn;

}









рдЖрдИрдмреА рдЦреЛрд▓реЗрдВ, рдХрд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рдбрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЖрдЙрдЯрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВред

рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рд╣рдо рдмрдЯрди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдврд╛рд▓ рдХреЗ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред



- (void)viewDidLoad {

[super viewDidLoad];



btn.gradientStartColor = [UIColor whiteColor];

btn.gradientEndColor = [UIColor grayColor];

[self.view addSubview:btn];

}









рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ

рдпрд╣рд╛рдБ рдПрдХ рдмрдЯрди рд╣реИ







рдпрд╣ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рд╣реИ, рдФрд░ рд╣рдо рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рддрд┐рднрд╛ рдирд╣реАрдВ рд╣реИред



рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдмрдЯрди рдкрд░ рдПрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЬреЛрдбрд╝реЗрдВред



рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдкрд░рдд рдбрд╛рд▓реЗрдВ рдФрд░ рдЬрд╛рдЧрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЬреЛрдбрд╝реЗрдВ



_glossyLayer = [[CAGradientLayer alloc] init];

_glossyLayer.bounds = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height/2);

_glossyLayer.position = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/4);

[self.layer addSublayer:_glossyLayer];









рдбреНрд░рд╛рдЕрд░ рдореЗрдВ рд╣рдо рдПрдХ рд▓реЗрдпрд░ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рд░рдВрдЧреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ





[_glossyLayer setColors:

[NSArray arrayWithObjects:

(id)[[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.99f] CGColor]

, (id)[[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.2f] CGColor], nil]];








рдФрд░ ... рджреМрдбрд╝реЛ

рд╡рд╣ рд╕рдм рд╣реИред







рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рдЖрдк CoreAnimation рд▓реЗрдпрд░ рдореЗрдВ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдЯреНрд░рд╛рдВрдЬрд╝реИрдХреНрд╢рди рдЖрджрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд░рд╛рдЬреНрдп рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред



рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ Marshet15 , рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд░реНрдо рдирд╣реАрдВ рд╣реИрдВред



All Articles