gpt4 book ai didi

c# - 如何使用 Xamarin.Forms 在 iOS 中创建带圆角的进度条

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:15:34 25 4
gpt4 key购买 nike

我使用了这个 SO Question 的输入使用 DrawableAndroid 平台创建带圆角的自定义进度条。但是我无法为 iOS 创建相同的输出。

下面是它在 Android 上的样子。 Android Sample

如何在 iOS 中也创建相同的效果?

最佳答案

有很多方法可以做到这一点,我更喜欢使用 UIViewCALayer 并添加一个 CAShapeLayer 来绘制“进度条”。

UIView 进度条示例:

enter image description here

public class ProgressView : UIView
{
CAShapeLayer progressLayer;
UILabel label;

public ProgressView() { Setup(); }
public ProgressView(Foundation.NSCoder coder) : base(coder) { Setup(); }
public ProgressView(Foundation.NSObjectFlag t) : base(t) { Setup(); }
public ProgressView(IntPtr handle) : base(handle) { }
public ProgressView(CGRect frame) : base(frame) { Setup(); }

void Setup()
{
BackgroundColor = UIColor.Clear;

Layer.CornerRadius = 25;
Layer.BorderWidth = 10;
Layer.BorderColor = UIColor.Blue.CGColor;
Layer.BackgroundColor = UIColor.Cyan.CGColor;

progressLayer = new CAShapeLayer()
{
FillColor = UIColor.Red.CGColor,
Frame = Bounds
};
Layer.AddSublayer(progressLayer);

label = new UILabel(Bounds)
{
TextAlignment = UITextAlignment.Center,
TextColor = UIColor.White,
BackgroundColor = UIColor.Clear,
Font = UIFont.FromName("ChalkboardSE-Bold", 20)
};
InsertSubview(label, 100);
}

double complete;
public double Complete
{
get { return complete; }
set { complete = value; label.Text = $"{value * 100} %"; SetNeedsDisplay(); }
}

public override void Draw(CGRect rect)
{
base.Draw(rect);
var progressWidth = (rect.Width - (Layer.BorderWidth * 2)) * complete;
var progressRect = new CGRect(rect.X + Layer.BorderWidth, rect.Y + Layer.BorderWidth, progressWidth, (rect.Height - Layer.BorderWidth * 2));
progressLayer.Path = UIBezierPath.FromRoundedRect(progressRect, 25).CGPath;
}
}

使用示例:

var progressView = new ProgressView(new CGRect(50, 50, 300, 50));
Add(progressView);
DispatchQueue.MainQueue.DispatchAsync(async () =>
{
while (progressView.Complete <= 1)
{
InvokeOnMainThread(() => progressView.Complete += 0.05);
await Task.Delay(1000);
}
});

关于c# - 如何使用 Xamarin.Forms 在 iOS 中创建带圆角的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616422/

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