如何将 circleView 进度添加到扩展到所有 UIView 的 UIView?

How to add a circleView progress to an UIView expanding to all UIView?

我已经在故事板中设置了一个使用约束的 UIView,我想使用 CAShapeLayerUIBezierPath.

向该视图添加一个循环进度

我已经正确添加了这个,但是圆圈没有扩展到所有视图。我在我的 viewDidLoad 函数中调用它。我的视图有调整高度 top-x 视图和宽度的限制。

- (void)viewDidLoad {
[super viewDidLoad];

CAShapeLayer *borderLayer = [CAShapeLayer layer];
borderLayer.fillColor = [UIColor whiteColor].CGColor;
CGFloat lineWidth = 4;

CGRect rect = CGRectMake(lineWidth+lineWidth/2, lineWidth+lineWidth/2, self.myView.bounds.size.width/2, self.myView.bounds.size.height/2);
borderLayer.path = [UIBezierPath bezierPathWithOvalInRect:rect].CGPath;
borderLayer.strokeColor = [[UIColor redColor] CGColor];
borderLayer.lineWidth = lineWidth;
[borderLayer setFillColor:[UIColor clearColor].CGColor];
[self.myView.layer addSublayer:borderLayer];
}

圈子进度没有调整到UIView,显示如下:

我怎么画这个占据整个UIView像这样:

1 - 您的视图框架尚未在 viewDidLoad 中设置。您需要在视图控制器的生命周期中将此代码移至 viewDidLayoutSubviews 或更高版本。

相关问题:

Why am I having to manually set my view's frame in viewDidLoad?

有关视图控制器生命周期的 Apple 文档: https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/WorkWithViewControllers.html#//apple_ref/doc/uid/TP40015214-CH6-SW1

2 - 改变这个:

CGRect rect = CGRectMake(lineWidth+lineWidth/2, lineWidth+lineWidth/2, self.myView.bounds.size.width/2, self.myView.bounds.size.height/2);

对此:

CGRect rect = CGRectMake(lineWidth/2, lineWidth/2, self.myView.bounds.size.width - lineWidth, self.myView.bounds.size.height - lineWidth);

结果(我在测试中使用了略微不同的线宽和视图大小):