UIProgressView在iOS 7.1中自定义跟踪和进度图像

iOS 7.1似乎已经打破了UIProgressView的自定义图像属性。 现在用于成功定制进度视图的代码产生默认外观。

我在viewDidLoad设置了一个样例项目:

 self.progressView.frame = CGRectMake(self.progressView.frame.origin.x, self.progressView.frame.origin.y, self.progressView.frame.size.width, 9); UIImage *img = [UIImage imageNamed:@"progress_bar_fill.png"]; img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; self.progressView.progressImage = img; img = [UIImage imageNamed:@"progress_bar_empty.png"]; img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; self.progressView.trackImage = img; 

我仍然得到默认的外观。 我已经通过并validationimg是非零,如预期。 这是怎么回事?

更新:有一个OpenRadar为此,我也提交了我自己的一个示例项目完整的雷达。

更新2:正如下面的Axy所述,你必须添加这个让JEProgressView正常工作:

 _progressBar.tintColor = [UIColor clearColor]; 

这非常烦人。 我没有find一种方法来解决这个问题,没有UIProgressView子类。

无论如何,这里是我如何解决这个问题: https : //gist.github.com/JohnEstropia/9482567

您将不得不将UIProgressView出现UIProgressViewJEProgressView ,包括JEProgressView和故事板中的那些。

基本上,你需要强制分配图像直接到UIProgressView的孩子UIImageView

该子类是需要重写layoutSubviews ,根据图像大小调整layoutSubviews的高度。

你是对的。 自从7.1在Xcode 5.1种子1中出现以来,这个错误一直存在。我提交(并重新提交)了Xcode 5.1的所有5个种子的相同错误,现在在Xcode 5.1上。 但苹果没有解决这个问题。

请提交这个bug! 你可以参考我的错误,如果你喜欢:15547259越多越好! 我认为这是严重的破坏,因为这意味着一个工作正常的应用程序现在被破坏(如果它使用进度视图和progressImage )。

我使用了John Estropia的解决scheme,但是它显示了蓝色的色调条,覆盖了我的graphics效果。

我补充说

_progressBar.tintColor = [UIColor clearColor];

它很好。 感谢解决scheme的人。

你好朋友我已经使用下面的代码在我的应用程序中添加UIProgressView:

 UIProgressView *progressView; progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; progressView.progressTintColor[UIColor colorWithRed:187.0/255 green:160.0/255 blue:209.0/255 alpha:1.0]; [[progressView layer]setCornerRadius:10.0f]; [[progressView layer]setBorderWidth:2.0f]; [[progressView layer]setMasksToBounds:TRUE]; progressView.clipsToBounds = YES; [[progressView layer]setFrame:CGRectMake(30, 295, 260, 25)];[[progressView layer]setBorderColor[UIColor whiteColor].CGColor]; progressView.trackTintColor = [UIColor clearColor]; [progressView setProgress: (float)count/15 animated:YES]; 

希望代码对你有所帮助,我在这里find了: 代码的来源

我试图从John Estropia实现JEProgressView文件,但是它不起作用。 我一定是做错了 – 但是我对此有点新鲜。 有人可以解释如何做到这一点? 我知道这可能是一个愚蠢的问题 – 但经过大量的谷歌search,我认为问是唯一的方法。

我也抓住了这个错误。 我试图解决它与UIProgressView属性玩,但没有结果。 上面贴出的John Estropia解决scheme也不适用于我,也许它不支持自动布局,所以我做了一个绕过这个bug的临时解决scheme。 https://github.com/ninjaproger/AKProgressView

对于我来说这适用于iOS版本7.1和以上的进度图像:

 if ([[UIDevice currentDevice] systemVersion] >= 7) self.progressView.tintColor = [UIColor colorWithPatternImage:img]; 

使用Xcode5,现在可以使用Interface Builder制作可resize的图像。 我们可以指定resize的方向和内容插入,并在界面生成器中select要被放置的区域。

要使用此function,您必须为要resize的图像使用Asset Catalog在这里输入图像说明 在这里输入图像说明 在这里输入图像说明 在这里输入图像说明