UIProgressView在iOS 7中显示问题

uer*_*ceg 8 iphone objective-c uiprogressview ios ios7

我需要UIProgressView作为iOS 7应用程序的UITableView单元的一部分.我在单元格右侧的代码中添加了UIProgressView,如下所示:

_progressBar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
_progressBar.translatesAutoresizingMaskIntoConstraints = NO;
[self.contentView addSubview:_progressBar];

[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_progressBar attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_progressBar attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-10.0]];
[_progressBar addConstraint:[NSLayoutConstraint constraintWithItem:_progressBar attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:60.0]];
[_progressBar addConstraint:[NSLayoutConstraint constraintWithItem:_progressBar attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:12.0]];
Run Code Online (Sandbox Code Playgroud)

但是,显示UIProgressView有点奇怪.当进度为零时,UIProgressView对象如下所示:

在此输入图像描述

当我将进度值设置为0.5时,UIProgressView在左侧变为矩形,并在右侧保持圆角矩形:

在此输入图像描述

当我将进度设置为0.98时,看起来像这样:

在此输入图像描述

任何想法如何通过简单设置进度值来填充UIProgressView,并保持整个时间的圆角矩形(或矩形)形式?或者,如果不添加自定义图形或覆盖UIProgressView,这是不可能的?

非常感谢提前和最好的问候.

Sjo*_*ors 19

今天有同样的问题,修复不是那么难:)

在界面构建器中添加一个UIView,其大小与UIProgressView完全相同.在这个新的UIView中添加你的UIProgressView.

如果你想要角落,请为你的UIView做以下事情:

1)将cornerradius设置为高度的一半(例如,30px高度进度条意味着15px角半径UIVIew))

myView.layer.cornerRadius = 15; 
Run Code Online (Sandbox Code Playgroud)

2)将掩码设置为边界

myView.layer.masksToBounds = TRUE;
Run Code Online (Sandbox Code Playgroud)

3)将剪辑设置为边界,这样UIView就不会出现任何问题

myView.clipsToBounds = TRUE;
Run Code Online (Sandbox Code Playgroud)

现在你有一个圆形的UIProgressBar,你想要的高度.

如果您不想要圆角,只需以相同的方式添加UIView,但只将背景颜色更改为与UIProgressbar tracktint相同的灰色.

祝好运!

-Sjoerd


roc*_*cir 5

供将来参考:我已经通过设置角半径来解决了这个问题

  _progressView.layer.cornerRadius = 2.0;
Run Code Online (Sandbox Code Playgroud)

然后:

  _progressView.clipsToBounds = YES;
Run Code Online (Sandbox Code Playgroud)

不需要UIProgressView的容器.