我正在开发一个 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 变量成为另一个类的一部分有什么区别?