动画按钮
来源:互联网 发布:淘宝商城毛线店 编辑:程序博客网 时间:2024/05/06 06:55
动画按钮
by 伍雪颖
github
- (void)awakeFromNib {
self.lineColor= [UIColorwhiteColor];
self.lineHeight= 2.0;
self.lineSpacing= 8.0;
self.lineWidth= 30.0;
[selfupdateAppearance];
}
- (void)updateAppearance {
CGFloat x = CGRectGetWidth(self.bounds) / 2.0;
CGFloat heightDiff =self.lineHeight+ self.lineSpacing;
CGFloat y = CGRectGetHeight(self.bounds) / 2.0- heightDiff;
_topLayer = [selfcreateLayer];
_topLayer.position= CGPointMake(x , y);
y += heightDiff;
_middleLayer = [selfcreateLayer];
_middleLayer.position= CGPointMake(x , y);
y += heightDiff;
_bottomLayer = [selfcreateLayer];
_bottomLayer.position= CGPointMake(x , y);
[selftransformToState:_currentState];
}
- (void)transformToState:(AnimationButtonState)state {
_currentState = state;
CATransform3D transform;
switch (state) {
case AnimationButtonStateCross:{
transform = CATransform3DMakeTranslation(0.0,_middleLayer.position.y-_topLayer.position.y,0.0);
_topLayer.transform= CATransform3DRotate(transform,M_PI_4,0.0,0.0,1.0);
_middleLayer.transform= CATransform3DMakeScale(0.,0.,0.);
transform = CATransform3DMakeTranslation(0.0,_middleLayer.position.y-_bottomLayer.position.y,0.0);
_bottomLayer.transform= CATransform3DRotate(transform, -M_PI_4,0.0,0.0,1.0);
}break;
default:{
_topLayer.transform= CATransform3DIdentity;
_middleLayer.transform= CATransform3DIdentity;
_bottomLayer.transform= CATransform3DIdentity;
}break;
}
}
- (CAShapeLayer*)createLayer {
CAShapeLayer *layer = [CAShapeLayernew];
UIBezierPath *path = [UIBezierPathnew];
[path moveToPoint:CGPointMake(0,0)];
[path addLineToPoint:CGPointMake(self.lineWidth,0)];
layer.path= path.CGPath;
layer.lineWidth= self.lineHeight;
layer.strokeColor= self.lineColor.CGColor;
layer.lineCap= @"round";
CGPathRef bound = CGPathCreateCopyByStrokingPath(layer.path,
nil,
layer.lineWidth,
kCGLineCapButt,
kCGLineJoinMiter,
layer.miterLimit);
layer.bounds= CGPathGetBoundingBox(bound);
CGPathRelease(bound);
[self.layeraddSublayer:layer];
return layer;
self.lineColor= [UIColorwhiteColor];
self.lineHeight= 2.0;
self.lineSpacing= 8.0;
self.lineWidth= 30.0;
[selfupdateAppearance];
}
- (void)updateAppearance {
CGFloat x = CGRectGetWidth(self.bounds) / 2.0;
CGFloat heightDiff =self.lineHeight+ self.lineSpacing;
CGFloat y = CGRectGetHeight(self.bounds) / 2.0- heightDiff;
_topLayer = [selfcreateLayer];
_topLayer.position= CGPointMake(x , y);
y += heightDiff;
_middleLayer = [selfcreateLayer];
_middleLayer.position= CGPointMake(x , y);
y += heightDiff;
_bottomLayer = [selfcreateLayer];
_bottomLayer.position= CGPointMake(x , y);
[selftransformToState:_currentState];
}
- (void)transformToState:(AnimationButtonState)state {
_currentState = state;
CATransform3D transform;
switch (state) {
case AnimationButtonStateCross:{
transform = CATransform3DMakeTranslation(0.0,_middleLayer.position.y-_topLayer.position.y,0.0);
_topLayer.transform= CATransform3DRotate(transform,M_PI_4,0.0,0.0,1.0);
_middleLayer.transform= CATransform3DMakeScale(0.,0.,0.);
transform = CATransform3DMakeTranslation(0.0,_middleLayer.position.y-_bottomLayer.position.y,0.0);
_bottomLayer.transform= CATransform3DRotate(transform, -M_PI_4,0.0,0.0,1.0);
}break;
default:{
_topLayer.transform= CATransform3DIdentity;
_middleLayer.transform= CATransform3DIdentity;
_bottomLayer.transform= CATransform3DIdentity;
}break;
}
}
- (CAShapeLayer*)createLayer {
CAShapeLayer *layer = [CAShapeLayernew];
UIBezierPath *path = [UIBezierPathnew];
[path moveToPoint:CGPointMake(0,0)];
[path addLineToPoint:CGPointMake(self.lineWidth,0)];
layer.path= path.CGPath;
layer.lineWidth= self.lineHeight;
layer.strokeColor= self.lineColor.CGColor;
layer.lineCap= @"round";
CGPathRef bound = CGPathCreateCopyByStrokingPath(layer.path,
nil,
layer.lineWidth,
kCGLineCapButt,
kCGLineJoinMiter,
layer.miterLimit);
layer.bounds= CGPathGetBoundingBox(bound);
CGPathRelease(bound);
[self.layeraddSublayer:layer];
return layer;
}
1 0
- 动画按钮
- 动画按钮
- 按钮动画
- 按钮动画
- 按钮动画
- 按钮动画
- 动画按钮
- 按钮动画
- 点击按钮 按钮缩放动画:
- 按钮动画效果
- 按钮动画(一)
- 按钮动画(二)
- 带动画的按钮
- 动画弹出式按钮OXExpandingButtonBar
- duilib动画按钮实现
- 旋转动画+悬浮按钮
- duilib动画按钮实现
- 动画按钮实现
- Jersey服务开启却报404的错误
- poj 1836 Alignment
- MFC中定时器的使用
- [C++]Single Number 单个数字
- Java初级培训笔记------容器 (3)
- 动画按钮
- windows下安装gevent
- 【算法之旅】——-1、算法初识
- EventBus, otto, LocalBroadcast的选择
- 购物框数量加减功能
- 使用DBCP进行数据源配置
- 裴波那数列的计算
- COCOS2D-JS的屏幕适配方案
- 初学登录拦截器小例子