如何使用 CGAffine 正确缩小 UIProgressView?

Posted

技术标签:

【中文标题】如何使用 CGAffine 正确缩小 UIProgressView?【英文标题】:How do I correctly shrink a UIProgressView using CGAffine? 【发布时间】:2013-05-29 20:22:09 【问题描述】:

我想从根本上降低 UIProgressView 的高度以创建“更薄”的进度条。我不确定我是否只是错误地使用了 CGAffine,或者我需要完全使用不同的方法。这是我的代码,prog1、prog2 和 prog3 都是已经定义好的进度视图:

CGFloat sx1 = 1.0f;
CGFloat sy1 = 1.0f;
CGFloat sx2 = 1.0f;
CGFloat sy2 = 0.5f;
CGFloat sx3 = 1.0f;
CGFloat sy3 = 2.0f;

self.prog1.transform = CGAffineTransformMakeScale(sx1, sy1);
self.prog2.transform = CGAffineTransformMakeScale(sx2, sy2);
self.prog3.transform = CGAffineTransformMakeScale(sx3, sy3);

prog1 正常显示,就好像什么都没做一样。 prog2 没有显示 1 个细条,而是显示了两个细条,一个在另一个之上。 prog3 没有显示 1 个粗条,而是显示粗条的上半部分,底部被截断。我试着弄乱框架,但这似乎也没有用。

我注意到有时在测试时,它会立即执行此操作。但有时,我会得到我想要的结果。但是,旋转设备后,进度视图总是会卡在“坏”位置。

【问题讨论】:

【参考方案1】:

看来,这种显示更细的进度条的方法确实是无效的,我的实验得出了同样的结论。 有一些第三方的进度条实现可用,有些似乎更流行,即KOAProgressBar 和DDProgressView,但似乎都没有启用非常小的进度条。

我最终实现了我自己的“进度视图”,它只是一个具有两种填充类型的矩形(需要它用于内部浏览器地址栏下的细进度线,类似于新 YouTube 网络应用或 chrome 上的加载指示器浏览器 ios 应用程序)。完成后,我会确保将其发布here。

【讨论】:

以上是关于如何使用 CGAffine 正确缩小 UIProgressView?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaFX 实现放大/缩小?

设置缩小的相机预览以相对于宽度具有正确的图像纵横比

如何使用 Gulp 从 SASS/SCSS 中缩小和 Autoprefixer CSS 文件

使用 Gulp.js 将版本化和构建(缩小)文件正确提交到 GitHub

使用 scikit image 将图像缩小为文本内容

IE 11:图像在 flexbox 中无法正确缩小