使用的程序:XCode
语言:Objective-C
我想做的是:创建一个程序,创建一个以随机直径的触摸为中心的圆圈。
下面用短划线表示,我有在UIView中创建一个随机直径圆的代码。我基本上是一个初学者,所以我完全不确定把这些代码放在程序文件(viewcontroller、scenedelegate等(的什么地方。我也不确定如何创建代码,让它在屏幕上完成。
如有任何帮助或提示,我们将不胜感激。
float rndValue = (((float)arc4random()/0x100000000)*47);
CAShapeLayer *circleLayer = [CAShapeLayer layer];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, rndValue, rndValue)] CGPath]];
[[self.view layer] addSublayer:circleLayer];
[circleLayer setStrokeColor:[[UIColor redColor] CGColor]];
[circleLayer setFillColor:[[UIColor clearColor] CGColor]];
一般来说,操作CALayer
的代码块应该放在UIView
子类中,尽管它也可以放在[UIViewController viewDidLoad:]
或其他地方。
例如,在随机位置绘制圆形的视图如下所示:
#import "RandomCircleView.h"
@implementation RandomCircleView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self configureSublayers];
}
return self;
}
// MARK: Private
- (void)configureSublayers {
float rndValue = (((float)arc4random()/0x100000000)*47);
CAShapeLayer *circleLayer = [CAShapeLayer layer];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, rndValue, rndValue)] CGPath]];
[self.layer addSublayer:circleLayer]; // ! this line is modified
[circleLayer setStrokeColor:[[UIColor redColor] CGColor]];
[circleLayer setFillColor:[[UIColor clearColor] CGColor]];
}
@end
然后你可以在你的视图控制器中添加该视图,比如
- (void)viewDidLoad {
[super viewDidLoad];
RandomCircleView *randomCircleView = [[RandomCircleView alloc] init];
[self.view addSubview:randomCircleView];
// You may want to adjust the frame of randomCircleView here...
}
您也可以通过指定自定义类在.xib和.streboard文件中使用RandomCircleView
。