iOS 플러시 컨트롤 회전 효과
회전 애니메이션은 반드시 현재view에 추가해야 합니다.layer 위
전체적으로 이 뷰를 돌리는 것이지 이 CAShap Layer 대상을 돌리는 것이 아니다.
#import "MyView.h"
#define SIZE_RADIUS_WIDTH 30
@interface MyView ()
@property (nonatomic , strong) UIView *toast;
@property (nonatomic, strong)UIView *rotateView;
@property (nonatomic, strong)CAShapeLayer *rotateLayer;
@end
@implementation MyView
- (void)drawRect:(CGRect)rect {
// _toast = [[UIView alloc] initWithFrame:CGRectMake((rect.size.width - toastWidth) / 2, (rect.size.height - toastWidth) / 2 , toastWidth, toastWidth)];
// _toast.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.8];
// _toast.layer.cornerRadius = 10;
//
// [self addSubview:_toast];
//
// _rotateLayer = [CAShapeLayer layer];
// _rotateView = [[UIView alloc] initWithFrame:CGRectMake((_toast.frame.size.width - 2 * SIZE_RADIUS_WIDTH) / 2, (_toast.frame.size.height - 2 * SIZE_RADIUS_WIDTH) / 2, 2 * SIZE_RADIUS_WIDTH, 2 * SIZE_RADIUS_WIDTH)];
// _rotateView.backgroundColor = [UIColor cyanColor];
// NSLog(@"%@",NSStringFromCGRect(_rotateView.frame));
//
// [_toast addSubview:_rotateView];
//
// UIBezierPath *pathRotate= [UIBezierPath bezierPathWithArcCenter:CGPointMake(SIZE_RADIUS_WIDTH, SIZE_RADIUS_WIDTH) radius:SIZE_RADIUS_WIDTH startAngle:- M_PI_2 endAngle:( M_PI) clockwise:YES];
// _rotateLayer = [CAShapeLayer layer];
// _rotateLayer.path = pathRotate.CGPath;
// _rotateLayer.fillColor = [UIColor clearColor].CGColor;
// _rotateLayer.strokeColor = [UIColor whiteColor].CGColor;
// _rotateLayer.lineWidth = 3;
// _rotateLayer.lineCap = kCALineCapRound;
// [_rotateView.layer addSublayer:_rotateLayer];
//
// CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//// rotateAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
// rotateAnimation.fromValue = @0;
// rotateAnimation.toValue = @(2*M_PI);
//
// rotateAnimation.duration = 3;
// rotateAnimation.repeatCount = HUGE;
// rotateAnimation.removedOnCompletion = NO;
// [_rotateView.layer addAnimation:rotateAnimation forKey:nil];
//
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(rect.size.height/2, rect.size.height/2) radius:60 startAngle:-M_PI_2 endAngle:M_PI clockwise:YES];
_rotateLayer = [CAShapeLayer layer];
_rotateLayer.path = path.CGPath;
_rotateLayer.fillColor = [UIColor clearColor].CGColor;
_rotateLayer.strokeColor = [UIColor purpleColor].CGColor;
_rotateLayer.lineWidth = 3;
_rotateLayer.lineCap = kCALineCapRound;
[self.layer addSublayer:_rotateLayer];
CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotateAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
rotateAnimation.fromValue = @0;
rotateAnimation.toValue = @(2*M_PI);
rotateAnimation.duration = 3;
rotateAnimation.repeatCount = HUGE;
rotateAnimation.removedOnCompletion = NO;
[self.layer addAnimation:rotateAnimation forKey:nil];
}
@end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.