iOS上是否可以使用从右到左的进度条?

时间:2011-04-23 19:17:42

标签: cocoa-touch ios

我尝试发送[UIProgressView setProgress]个负值,但这不起作用。

是否有其他方法可以从右侧获得进度条?

8 个答案:

答案 0 :(得分:11)

您可以尝试将UIProgressView的{​​{3}}属性设置为新的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;

答案 1 :(得分:8)

您可以轮换UIProgressView

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

其中DegreesToRadians是:

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

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

您可以将视图旋转180°:

progressView.transform = CGAffineTransformMakeRotation(-M_PI);

答案 4 :(得分:1)

在带故事板的iOS 7中,您可以将“进度色调”设置为“轨迹色调”,反之亦然,然后从1中减去常规值并将其设置为当前进度。可能更好的做到另一种(旋转)方式,但我想我会抛弃它。

答案 5 :(得分:0)

Swift 回答:

progressView.transform = CGAffineTransform(rotationAngle: .pi)

答案 6 :(得分:0)

在iOS 9+中,您可以使用semanticContentAttribute

progressView.semanticContentAttribute = .forceRightToLeft

答案 7 :(得分:0)

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