UIProgressView 跟踪和进度图像在 iOS7 中不起作用

Posted

技术标签:

【中文标题】UIProgressView 跟踪和进度图像在 iOS7 中不起作用【英文标题】:UIProgressView track and progress images not working in iOS7 【发布时间】:2014-02-23 11:26:57 【问题描述】:

我有一个自定义的 UIProgressView,其中包含进度和跟踪图像。我还自定义了进度视图的大小。这在 ios 6 中运行良好。我在让它在 iOS7 中运行时遇到问题。

_progress.progressViewStyle = UIProgressViewStyleBar;
_progress.trackImage = [UIImage imageNamed:@"summary-progress-track.png"];
_progress.progressImage = [UIImage imageNamed:@"summary-progress.png"];
_progress.frame = CGRectMake(50, 50, 100, 10);

不仅高度会被忽略,而且自定义图像也不会被应用。我只是得到一个像这样的蓝色进度条:

我认为默认的色调会以某种方式覆盖进度图像。我也尝试过使用 UIAppearance 进行设置,但没有成功。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    [[UIProgressView appearance] setProgressImage:[UIImage imageNamed:@"summary-progress.png"]];
    [[UIProgressView appearance] setTrackImage:[UIImage imageNamed:@"summary-progress-track.png"]];

    return YES;

【问题讨论】:

查看link 感谢 pawan,但不幸的是我没有使用自动布局,所以它不适用。 【参考方案1】:

我个人使用 MPProgressHUD 来跟踪视图的所有进度。这是下载链接 https://github.com/jdg/MBProgressHUD

用法很简单。这是您可能想查看的教程。

http://code.tutsplus.com/tutorials/ios-sdk-uiactivityindicatorview-and-mbprogresshud--mobile-10530

MPProgressHUD 具有显示自定义图像的特定方法。

【讨论】:

感谢您的建议,我已经在使用 MBPrgress hud 但在不同的上下文中。我仍然希望能够针对不同的用例自定义 UIProgressView。【参考方案2】:

如果您还没有看过这篇文章,这应该会有所帮助。

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/UIKitUICatalog/UIProgressView.html#//apple_ref/doc/uid/TP40012857-UIProgressView-SW1

蓝色是 iOS7 中应用的控件的默认色调。

【讨论】:

Preson,我已经尝试过 UIAppearance API,它没有任何作用。【参考方案3】:

找到了解决办法。如果其他人被困在这个问题上,请查看这个答案和建议的代码来解决这个问题:UIProgressView custom track and progress images in iOS 7.1

【讨论】:

【参考方案4】:

我打印进度的子视图,发现其中一个的frame width是0,

之后

    [_videoProgressView setProgress:progress animated:NO];

重置轨迹和进度图像

    UIImageView *trackImageView = _videoProgressView.subviews.firstObject;
    UIImageView *progressImageView = _videoProgressView.subviews.lastObject;
    CGRect trackProgressFrame = trackImageView.frame;
    trackProgressFrame.size.height = _videoProgressView.frame.size.height;
    trackImageView.frame = trackProgressFrame;
    progressImageView.frame = trackProgressFrame;
    progressImageView.image = progressImage;
    trackImageView.image = trackImage;

【讨论】:

以上是关于UIProgressView 跟踪和进度图像在 iOS7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIProgressView 未处理的颜色

如何在 UIProgressView 中设置进度色调颜色

UIProgressView 用 UIImage 自定义进度条

UIProgressView和UISlider

动态更新 UIProgressView 的进度

在进度视图顶部绘制图像