自定义形状的进度视图

Posted

技术标签:

【中文标题】自定义形状的进度视图【英文标题】:Custom Shaped progress View 【发布时间】:2012-02-04 10:06:43 【问题描述】:

我正在寻找有关自定义进度视图的一些解决方案。

基本上,我想填充下面的图像来表示加载进度,就像我们在游戏中的那样。

任何想法如何实现它??

【问题讨论】:

随心所欲地屏蔽它 - 使用不透明的 UIView 或使用 CGMaskRef - 并将蒙版高度与加载进度联系起来。就这么简单。 感谢您的快速回复。你能指导我使用屏蔽功能吗? CG中的菜鸟。 【参考方案1】:

使用 CoreGraphics 进行屏蔽:

UIImage *img = [UIImage imageNamed:@"imagetomask.png"];
CGImageRef maskRef = [UIImage imageNamed:@"mask.png"].CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                                CGImageGetHeight(maskRef),
                                                CGImageGetBitsPerComponent(maskRef),
                                                CGImageGetBitsPerPixel(maskRef),
                                                CGImageGetBytesPerRow(maskRef),
                                                CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef maskedImage = CGImageCreateWithMask([img CGImage], mask);
[imageView setImage:maskedImage];

您的mask.png 应该是像倒置 alpha 一样填充的不透明图像 - 黑色表示可见部分,白色表示透明。

【讨论】:

【参考方案2】:

创建自定义视图类并在该类中添加动画序列以无限地按顺序显示您的图像。

像这样将该视图添加到主窗口 (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0];

调用bringSubviewToFront 以在您想要此加载屏幕(视图)的任何视图上显示该视图。

【讨论】:

以上是关于自定义形状的进度视图的主要内容,如果未能解决你的问题,请参考以下文章

在自定义视图中绘制描边形状

具有特定形状的 Android 自定义视图

Android 自定义图像视图形状

如何使用 swiftUI 沿自定义路径移动视图/形状?

如何为形状添加自定义视图修改器

以swift语言在自定义表格视图单元格中更新进度视图下载