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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章