美文网首页
iOS 波浪效果

iOS 波浪效果

作者: CaptainRoy | 来源:发表于2018-11-14 11:00 被阅读7次
  • 效果


    波浪效果
  • WaveView.h

#import <UIKit/UIKit.h>

@interface WaveView : UIView

@property (nonatomic, assign) CGFloat alpha; // 振幅A
@property (nonatomic, assign) CGFloat omega; // 角速度ω
@property (nonatomic, assign) CGFloat phi; //初相φ
@property (nonatomic, assign) CGFloat kappa; //偏距k
@property (nonatomic, assign) CGFloat speed; // 移动速度

@end
  • WaveView.m
#import "WaveView.h"

@interface WaveView ()

@property (nonatomic, strong) CADisplayLink *displayLink;

@end

@implementation WaveView

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor cyanColor];
        self.alpha = self.bounds.size.height * 0.1;
        self.omega = M_PI * 2 / self.bounds.size.width;
        self.phi = 0;
        self.kappa = self.bounds.size.height * 0.5;
        self.speed = 5;
        self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplay)];
        [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    }
    return self;
}

#pragma mark - private method
- (void)handleDisplay
{
    if (!self.isHidden) {
        self.phi -= self.speed * self.omega;
        [self setNeedsDisplay];
    }
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    
    CGContextRef cxt = UIGraphicsGetCurrentContext();
    //初始化运动路径
    CGMutablePathRef path = CGPathCreateMutable();
    //设置起始位置
    CGPathMoveToPoint(path, nil, 0, self.bounds.size.height);
    //正弦曲线公式为:y=Asin(ωx+φ)+k;
    for (CGFloat x = 0.0f; x <= self.bounds.size.width; x++) {
        CGFloat y = self.alpha * sinf(self.omega * x + self.phi) + self.kappa;
        CGPathAddLineToPoint(path, nil, x, y);
    }
    CGPathAddLineToPoint(path, nil, self.bounds.size.width, self.bounds.size.height);
    CGPathCloseSubpath(path);
    //绘制曲线
    CGContextSetFillColorWithColor(cxt, [UIColor orangeColor].CGColor);
    CGContextSetLineWidth(cxt, 0.5);
    CGContextAddPath(cxt, path);
    CGContextFillPath(cxt);
    CGPathRelease(path);
    
}
  • 实现
WaveView *waveView = [[WaveView alloc] initWithFrame:CGRectMake(150, 150, 100, 100)];
    waveView.alpha = 10;
    waveView.kappa = 50;
    waveView.speed = 1.0f;
    waveView.layer.masksToBounds = YES;
    waveView.layer.cornerRadius = 50;
    [self.view addSubview:waveView];

相关文章

  • iOS实现波浪效果

    iOS实现波浪效果

  • iOS 波浪效果

    效果波浪效果 WaveView.h WaveView.m 实现

  • iOS实现波浪效果

    这篇文章主要为大家详细介绍了iOS实现波浪效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分...

  • iOS雷达波浪效果

    好久不见 有一项目有这么一个需求,当定位信号离开某个区域时,要把这个信号列为告警信号,并且要用相应的标志标记此信号...

  • IOS波浪效果的实现

    做ios 好几年了也没写过什么,我开始写一下这个吧! 首先定义一个waves继承于UIView 的类Waves.h...

  • iOS波浪效果实现

    为了使界面看起来高大上,很多app都会加入各种各样的动态效果。本篇文章就简单谈谈波浪效果的实现,效果如下所示: 实...

  • 【iOS】绘画波浪篇

    【iOS】绘画波浪篇 【iOS】绘画波浪篇

  • 波浪效果

    在工程中碰到了需要实现波浪动画。只知道是使用正弦函数和余弦函数,CADisplayLink来实现。 正弦,余弦函数...

  • iOS 波浪效果(根据正弦函数)

    当时写这个demo,是现公司出的面试题,题目的大致意思是通过随机数映射成实物,例如0~255,可以映射成颜色,然后...

  • iOS波浪效果超简单实现

    先上 GitHub地址 GLWaveView 介绍 一个自带波形动画的View, 可以添加多层波浪且方便自定义, ...

网友评论

      本文标题:iOS 波浪效果

      本文链接:https://www.haomeiwen.com/subject/jsmdfqtx.html