如何将 circleView 进度添加到扩展到所有 UIView 的 UIView?
How to add a circleView progress to an UIView expanding to all UIView?
我已经在故事板中设置了一个使用约束的 UIView
,我想使用 CAShapeLayer
和 UIBezierPath
.
向该视图添加一个循环进度
我已经正确添加了这个,但是圆圈没有扩展到所有视图。我在我的 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);
结果(我在测试中使用了略微不同的线宽和视图大小):
我已经在故事板中设置了一个使用约束的 UIView
,我想使用 CAShapeLayer
和 UIBezierPath
.
我已经正确添加了这个,但是圆圈没有扩展到所有视图。我在我的 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);
结果(我在测试中使用了略微不同的线宽和视图大小):