我创建了一个名为myBezierPaths的类,其中有两个类型为UIBezierPath和UIColor的成员变量,然后我尝试使用此类的对象来绘制bezierpath,但我没有得到bezierpath,下面是我的代码
//Bezierpath.h
@interface BezierPath : NSObject
{
UIBezierPath *m_bezierPath;
UIColor *m_pathColor;
}
@property (nonatomic, strong) UIBezierPath *bezierPath;
@property (nonatomic, strong) UIColor *pathColor;
@end
//drawingView.m
- (void)drawRect:(CGRect)rect
{
for (BezierPath *pathobj in m_pathArray)
{
[pathobj.pathColor setStroke];
[pathobj.pathColor setFill];
[pathobj.bezierPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
*self.myPath = [[BezierPath alloc] init];*
myPath.bezierPath.lineWidth = 5;
myPath.bezierPath.lineCapStyle = kCGLineCapRound;
myPath.bezierPath.flatness = 0.0;
myPath.bezierPath.lineJoinStyle = kCGLineJoinRound;
myPath.bezierPath.miterLimit = 200.0;
self.myPath.pathColor = [UIColor redColor];
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
[myPath.bezierPath moveToPoint:[mytouch locationInView:self]];
[m_pathArray addObject:self.myPath];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
[self.myPath.bezierpath addLineToPoint:[mytouch locationInView:self]];
[self setNeedsDisplay];
}
希望我清楚我的解释,等待回复
此致 兰吉特
答案 0 :(得分:2)
首先,在你的drawRect
中,你实际上并没有填充形状。你可以抚摸它(基本上画一个边框),但你需要调用[pathObj.bezierPath fill];
来实际用颜色填充形状。
你要展示的代码很多,所以很难说出问题出在哪里。我会在drawRect
方法中创建一个断点,以确定是否所有变量都存在。例如,您显示(我假设)是一个数组:m_pathArray
。你确定它已经初始化了吗?您确定BezierPath
的属性是否正常工作?我注意到touchesBegan
在pathColor
设置bezierPath
,但只能访问/读取init
变量。那已经初始化了吗?你在哪里创建'm_bezierPath'实例变量?您是在BezierPath {{1}}方法中创建它还是在访问时懒惰地实例化它?
所以这些是你可以检查的东西。
答案 1 :(得分:0)
你没有展示你的touchesMoved
事件处理程序,但我希望这样的事情。否则你所做的就是创建一组长度为零的路径。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
[self.myPath.bezeirPath lineToPoint:[mytouch locationInView:self]];
}
答案 2 :(得分:0)
@Ranjit需要一些帮助我也有同样的问题...... 我想改变UIbezierpath的颜色。 但是,如果我选择颜色,我之前的路径也会自动用新颜色着色。
在我的第一张图片中,我画了一条线,所选的颜色是红色。 但是当我选择黄色以绘制另一条线时,前一条线也会变为黄色。(图像编号2)