在iOS上可以使用从右到左的进度条吗?

aij0ehis  于 2023-05-19  发布在  iOS
关注(0)|答案(9)|浏览(170)

我尝试发送[UIProgressView setProgress]负值,但不起作用。
有没有其他方法可以让进度条从右端开始填充?

juud5qan

juud5qan1#

您可以尝试将UIProgressViewtransform属性设置为一个新的CGAffineTransform,它将视图旋转180度并垂直翻转(以保留“光泽”)(请参见CGAffineTransformMake()CGAffineTransformRotate())。
沿着如下的东西:

UIProgressView *pv = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
pv.frame = CGRectMake(10, 100, 300, 11);
CGAffineTransform transform = CGAffineTransformMake(1, 0, 0, -1, 0, pv.frame.size.height); // Flip view vertically
transform = CGAffineTransformRotate(transform, M_PI); //Rotation angle is in radians
pv.transform = transform;
pv.progress = 0.5;
nqwrtyyt

nqwrtyyt2#

您可以旋转UIProgressView

progressView.transform = CGAffineTransformMakeRotation(DegreesToRadians(180));

其中DegreesToRadians是:

#define DegreesToRadians(d) ((d) * M_PI / 180.0)

要更改进度值,请使用正数。

dzhpxtsq

dzhpxtsq3#

一个更简单的版本是水平翻转它。

progressView.transform = CGAffineTransformMakeScale(-1.0f, 1.0f);
qmelpv7a

qmelpv7a4#

在iOS 9+中,您可以使用semanticContentAttribute
progressView.semanticContentAttribute = .forceRightToLeft

kyvafyod

kyvafyod5#

Swift回答:

progressView.transform = CGAffineTransform(rotationAngle: .pi)
muk1a3rh

muk1a3rh6#

可以将视图旋转180°:

progressView.transform = CGAffineTransformMakeRotation(-M_PI);
dauxcl2d

dauxcl2d7#

在具有故事板的iOS 7中,您可以将“进度着色”设置为“轨迹着色”,反之亦然,然后从1中减去常规值并将其设置为当前进度。可能更好地做它的其他(旋转)的方式,但我想我会把这个扔在那里。

mrphzbgm

mrphzbgm8#

Swift 5版本

progressView.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
mqxuamgl

mqxuamgl9#

我使用最新的SWIFTUI版本时可以做到这一点:

ProgressView(configuration)
.scaleEffect(x: -1, y: 3, anchor: .center)

相关问题