UIAlertView中画波形

来源:互联网 发布:梅花魂优化设计答案 编辑:程序博客网 时间:2024/06/14 04:52

1.从UIAlertView中派生出 UIWaveAlertView

2.创建waveDisplay_,

- (id)initWithTitle:(NSString *)title delegate:(id/*<UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles 

{

if ((self = [superinitWithTitle:title message:@"\n\n\n" delegate:delegate cancelButtonTitle:cancelButtonTitleotherButtonTitles:otherButtonTitles, nil]))

    {

waveDisplay_ = [[WaveDisplayalloc] initWithFrame:CGRectMake(12.0f,51.0f, 260.0f, 56.0f)];

[selfaddSubview:waveDisplay_];

        

        waveDisplay_.dataPoints =self.dataPoints;


[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(orientationDidChange:)name:UIDeviceOrientationDidChangeNotificationobject:nil];        

[[UIDevicecurrentDevice] beginGeneratingDeviceOrientationNotifications];

}

returnself;

}



3,WaveDisplay 的drawRect中画波形。


- (void)drawRect:(CGRect)rect 

{

    [superdrawRect:rect];

   static bool reverse =false;

    

   CGFloat scaleFactor = ((rect.size.height /2) - 4.0) /kMaxVolumeSampleValue;

    CGContextRef context =UIGraphicsGetCurrentContext();

    

    CGContextBeginPath(context);

    CGContextSetRGBStrokeColor(context,1.0, 1.0, 1.0,1.0);

    CGContextSetLineWidth(context,3.0);

   int count = [self.dataPointscount];

   CGFloat dx = rect.size.width / count;

   CGFloat x = 0.0;

   CGFloat y = rect.size.height /2;

   CGContextMoveToPoint(context, x, y);

   BOOL down = NO;

    

   for (NSNumber *pointin self.dataPoints) {

        // Draw curve

       CGFloat raw = [point floatValue] * scaleFactor;

       CGFloat draw = (down ? -raw : raw);

        draw = (reverse ? -draw : draw);

       CGContextAddQuadCurveToPoint(context, x + dx/2, y - draw *2, x += dx, y);

        

        down = !down;

    }

    

    reverse = !reverse;

    CGContextDrawPath(context,kCGPathStroke);//*/

}


原创粉丝点击