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

时间:2018-01-31 00:52:30

标签: ios objective-c uiview uibezierpath cashapelayer

我在故事板中使用约束设置了UIView,并且我想使用带有CAShapeLayer的{​​{1}}向此视图添加圈子进度。

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

UIBezierPath

圈子进度未调整为- (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]; } ,并显示如下:

enter image description here

我如何能够像这样占据整个UIView

enter image description here

1 个答案:

答案 0 :(得分:1)

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

相关问题:

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

关于视图控制器生命周期的Apple Docs: 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);

结果(我的测试使用略微不同的lineWidth和视图大小):

enter image description here