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;
我仍然得到默认外观。我已逐步完成并验证img
是否符合预期的非零。发生了什么事?
更新:这里有一个OpenRadar,我还提交了一份我自己的雷达,并提供了一个样本项目。
更新2:如下面的Axy所述,你必须添加它以使JEProgressView正常工作:
_progressBar.tintColor = [UIColor clearColor];
答案 0 :(得分:47)
这很烦人。如果没有子类化UIProgressView
,我找不到解决方法。
无论如何,我在这里解决了这个问题:https://gist.github.com/JohnEstropia/9482567
您必须将UIProgressView
的出现次数更改为JEProgressView
,包括NIB和故事板中的出现次数。
基本上,您需要强制将图像直接分配给UIProgressView
的孩子UIImageView
。
需要子类覆盖layoutSubviews
,您可以根据图像大小调整imageViews的高度。
答案 1 :(得分:5)
你是对的。自从7.1首次出现在Xcode 5.1种子1中以来,这个错误一直存在。我为Xcode 5.1的所有5个种子提交(并重新提交)相同的错误,现在在Xcode 5.1上。但苹果没有解决它。
请提交此错误!如果你愿意,你可以参考我的错误:15547259。越多越好!我认为这是严重破坏,因为这意味着一个工作正常的应用程序现在已被破坏(如果它使用带有progressImage
的进度视图)。
答案 2 :(得分:2)
我使用了John Estropia解决方案,但它显示了我的叠加蓝光色调条,具有相当奇怪的图形效果。
我添加了
_progressBar.tintColor = [UIColor clearColor];
并且它很好。谢谢你的解决方案。
答案 3 :(得分:2)
朋友们,我使用以下代码在我的应用程序中添加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];
希望代码对您有所帮助,我在此处找到了它:Source of Code
答案 4 :(得分:1)
我试图实现John Estropia的JEProgressView文件 - 但它不起作用。我一定做错了 - 但我对此有点新意。有人可以解释一下这是怎么做到的吗?我知道这可能是一个愚蠢的问题 - 但经过大量的谷歌搜索,我认为问是唯一的方法。
答案 5 :(得分:0)
我也抓住了这个bug。我尝试使用UIProgressView属性修复它但没有结果。上面发布的John的Estropia解决方案,对我来说也不起作用,也许它不支持自动布局,所以我制定了自己的临时解决方案来绕过这个bug。 https://github.com/ninjaproger/AKProgressView
答案 6 :(得分:0)
对我而言,这适用于iOS 7.1及更高版本的进度图像:
if ([[UIDevice currentDevice] systemVersion] >= 7)
self.progressView.tintColor = [UIColor colorWithPatternImage:img];
答案 7 :(得分:0)