2011-04-17 27 views

回答

7

例子:

- (void)drawRect:(NSRect)rect 
{ 
    NSBezierPath *curve = [NSBezierPath bezierPath]; 
    [curve moveToPoint:NSMakePoint(0,50)]; 
    [curve relativeCurveToPoint:NSMakePoint(150,50) controlPoint1:NSMakePoint(50,100) controlPoint2:NSMakePoint(100,0)]; 
    [[NSColor redColor] set]; 
    [curve stroke]; 
} 

结果:

Curve.png

+4

NSBezierPath在了AppKit框架,它不是IOS的一部分SDK但对于mac,那我该怎么办? – juliet 2011-04-22 05:27:29

+0

改为使用CGContextRef,看到我的新答案,包括示例。 – Anne 2011-04-22 13:49:31

-1

创建NSBezierPath,并使用您的点作为控制点。

9

在iOS上使用CGContextRef。

WavyView.h

#import <UIKit/UIKit.h> 

@interface WavyView : UIView { 

} 

@end 

WavyView.m

#import "WavyView.h" 

@implementation WavyView 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, 100, 100); 
    CGContextAddCurveToPoint(context,125,150,175,150,200,100); 
    CGContextAddCurveToPoint(context,225,50,275,75,300,200); 
    CGContextStrokePath(context); 
} 

- (void)dealloc { 
    [super dealloc]; 
} 

@end 

结果:

The Wave

+0

我想把这个WavyView放到ViewController中,但是当我将它添加到UIViewController时,我所得到的只是一个黑色方块。这里是我使用WavyView * drawScreen = [[WIALines alloc] initWithFrame:CGRectMake(170,351,100,100)]的代码; [self.view addSubview:drawScreen];我究竟做错了什么? – 2012-12-03 19:45:56