gpt4 book ai didi

ios - 如何将一个circleView进度添加到一个UIView并扩展到所有UIView?

转载 作者:行者123 更新时间:2023-11-29 00:04:24 25 4
gpt4 key购买 nike

我已经在 Storyboard中使用约束设置了一个 UIView,我想使用带有 UIBezierPathCAShapeLayer 向该 View 添加一个循环进度>.

我已正确添加此内容,但圆圈并未扩展到所有 View 。我在 viewDidLoad 函数中调用它。我的 View 对调整 top-x View 的高度和宽度有限制。

- (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 调整大小,显示如下:

enter image description here

我怎样才能像这样绘制它占据整个UIView:

enter image description here

最佳答案

1 - 您的 View 框架尚未在 viewDidLoad 中设置。您需要将此代码移动到 viewDidLayoutSubviews 或 View Controller 生命周期的稍后位置。

相关问题:

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

有关 View Controller 生命周期的 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);

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

enter image description here

关于ios - 如何将一个circleView进度添加到一个UIView并扩展到所有UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com