UIBezierPath不会在屏幕上绘图

时间:2012-10-02 17:08:43

标签: ios drawing

我正在开发一个iOS应用程序,屏幕上有一些绘图,我正在学习如何做。

我从Showing UIBezierPath on view复制了代码。这全部放在我的FirstViewController类的viewDidLoad函数中。

UIBezierPath *circle = [UIBezierPath
                    bezierPathWithOvalInRect:CGRectMake(75, 100, 200, 200)];  

//you have to account for the x and y values of your UIBezierPath rect 
//add the x to the width (75 + 200)
//add the y to the height (100 + 200)
UIGraphicsBeginImageContext(CGSizeMake(275, 300));

//this gets the graphic context
CGContextRef context = UIGraphicsGetCurrentContext();

//you can stroke and/or fill
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor lightGrayColor].CGColor);
[circle fill];
[circle stroke];

//now get the image from the context
UIImage *bezierImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageView *bezierImageView = [[UIImageView alloc]initWithImage:bezierImage];
[self.view addSubview:circle];

现在这个工作,圆圈在我的视野中完美绘制。 我遇到的问题不是宣布

UIBezierPath *circle = [UIBezierPath
                bezierPathWithOvalInRect:CGRectMake(75, 100, 200, 200)];  

在一个单独的类中,我有一个UIBezierPath类型的变量。我在FirstViewController.h中包含了该类的实例变量,如:

@property MyClass myClass;

在那堂课中:

@interface MyClass: UIView
@property UIBezierPath *shapeToBeDrawn;

因此,它不是在viewDidLoad中声明UIBezierPath,而只是我的类的实例变量。但是当我这样做时:

self.myClass.shapeToBeDrawn = [UIBezierPath
                    bezierPathWithOvalInRect:CGRectMake(75, 100, 200, 200)]; 

它不会在屏幕上绘制。

在viewDidLoad中声明它并将UIBezier变量作为另一个类的一部分之间的区别是什么?

0 个答案:

没有答案