不确定在程序中放置代码的位置.如何在XCode中通过触摸生成圆圈.(目标-C)



使用的程序: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

最新更新