iOS 파도 효과 구현

2671 단어 iOS파도 효과
본 논문 의 사례 는 iOS 가 파도 효 과 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.

코드:

@interface ViewController () 
@property (strong, nonatomic) CADisplayLink *displayLink;
@property (strong, nonatomic) CAShapeLayer *shapeLayer;
@property (strong, nonatomic) UIBezierPath *path;
@property (strong, nonatomic) CAShapeLayer *shapeLayer2;
@property (strong, nonatomic) UIBezierPath *path2;
@end

@implementation ViewController

- (void)viewDidLoad {
 [super viewDidLoad]; 

 _shapeLayer = [CAShapeLayer layer];
 _shapeLayer.frame = CGRectMake(0, 100, 375, 150);
 [self.view.layer addSublayer:_shapeLayer];
 

 _shapeLayer2 = [CAShapeLayer layer];
 _shapeLayer2.frame = CGRectMake(0, 100, 375, 150);
 [self.view.layer addSublayer:_shapeLayer2];


 _shapeLayer.fillColor = [[UIColor yellowColor] colorWithAlphaComponent:0.3].CGColor;
 _shapeLayer2.fillColor = [[UIColor blueColor] colorWithAlphaComponent:0.3].CGColor; 

 _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(drawPath)];
 [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; 

} 

- (void)drawPath {

 static double i = 0;
 
 CGFloat A = 10.f;//A  
 CGFloat k = 0;//y   
 CGFloat ω = 0.03;//   ω  ,    X    (     );   ω  ,    X    (     )。   0
 CGFloat φ = 0 + i;//  ,x=0    ;                。

 //y=Asin(ωx+φ)+k 

 _path = [UIBezierPath bezierPath];
 _path2 = [UIBezierPath bezierPath]; 

 [_path moveToPoint:CGPointZero];
 [_path2 moveToPoint:CGPointZero];
 for (int i = 0; i < 376; i ++) {

  CGFloat x = i;

  CGFloat y = A * sin(ω*x+φ)+k;
  CGFloat y2 = A * cos(ω*x+φ)+k;
  [_path addLineToPoint:CGPointMake(x, y)];
  [_path2 addLineToPoint:CGPointMake(x, y2)];

 }
 [_path addLineToPoint:CGPointMake(375, -100)];
 [_path addLineToPoint:CGPointMake(0, -100)];
 _path.lineWidth = 1;
 _shapeLayer.path = _path.CGPath; 

 [_path2 addLineToPoint:CGPointMake(375, -100)];
 [_path2 addLineToPoint:CGPointMake(0, -100)];
 _path2.lineWidth = 1;

  _shapeLayer2.path = _path2.CGPath;

 

 i += 0.1;

 if (i > M_PI * 2) {

  i = 0;//  i  

 }

}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기