3

我曾多次使用 SVProgressHUD 及其酷炫,现在的问题是,有没有办法根据状态更改 SVProgressHUD 的颜色?说,

  1. 如果成功,则 BG 颜色(深灰色)必须为绿色
  2. 如果它的错误,那么背景颜色必须是红色
  3. 其他一些颜色用于加载。

我从前几天开始尝试这个,但一切都失败了。

我知道可以通过创建我自己的自定义视图并相应地实现它来完成,但是如果有人已经创建了它并且我可以使用它,那不是很好。

如果上述更改可以在 SVProgressHUD 中完成,那么它很好,但如果不能,那么任何人都可以为我提供一个替代的 ProgressHUD

编辑: 我已经尝试过使用UIAppearance. 那里的问题假设我们为成功设置了绿色,为错误设置了红色,

现在,当第一次成功时,它是默认颜色,之后整个加载将是绿色所以即使第一次发生成功错误,它也会是绿色,

然后执行此操作后,指标将变为红色,

所以主要的是它不会立即反映,而是在代码执行后第二次反映

4

4 回答 4

5

可以通过这种方式自定义 SVProgressHUD 的 BG 颜色

-(void)showWithStatusSuccess
  {
  [[SVProgressHUD appearance] setHudBackgroundColor:[[UIColor greenColor] colorWithAlphaComponent:0.4]];
  [[SVProgressHUD appearance] setHudForegroundColor:[UIColor yellowColor]];
  [[SVProgressHUD appearance] setHudFont:[UIFont fontWithName:@"MarkerFelt-Wide" size:16]];
  [[SVProgressHUD appearance] setHudStatusShadowColor:[UIColor greenColor]];
  [SVProgressHUD showSuccessWithStatus:@"Great Success!"];
 }


-(void)showWithStatusError {
   [[SVProgressHUD appearance] setHudBackgroundColor:[[UIColor redColor] colorWithAlphaComponent:0.4]];
//[[SVProgressHUD appearance] setHudForegroundColor:[UIColor yellowColor]];
   [[SVProgressHUD appearance] setHudFont:[UIFont fontWithName:@"MarkerFelt-Wide" size:16]];
 //[[SVProgressHUD appearance] setHudStatusShadowColor:[UIColor greenColor]];
   [SVProgressHUD showErrorWithStatus:@"Failed with Error"];
  }

编辑: 在您的情况下,您需要在 showSuccessWithStatus 和 showErrorWithStatus Methods.so 中更改 SVProgressHUD 的 BGColor。所以转到 SVProgressHUD.m 文件更改您的代码

#pragma mark - Show then dismiss methods

+ (void)showSuccessWithStatus:(NSString *)string {
[[SVProgressHUD appearance] setHudBackgroundColor:[[UIColor greenColor] colorWithAlphaComponent:0.4]];
//[[SVProgressHUD appearance] setHudForegroundColor:[UIColor yellowColor]];
[[SVProgressHUD appearance] setHudFont:[UIFont fontWithName:@"MarkerFelt-Wide" size:16]];
[self showImage:[[self sharedView] hudSuccessImage] status:string];
}

+ (void)showErrorWithStatus:(NSString *)string {
[[SVProgressHUD appearance] setHudBackgroundColor:[[UIColor redColor] colorWithAlphaComponent:0.4]];
//[[SVProgressHUD appearance] setHudForegroundColor:[UIColor yellowColor]];
[[SVProgressHUD appearance] setHudFont:[UIFont fontWithName:@"MarkerFelt-Wide" size:16]];
//[[SVProgressHUD appearance] setHudStatusShadowColor:[UIColor greenColor]];
//[SVProgressHUD showWithStatus:@"Error"];

[self showImage:[[self sharedView] hudErrorImage] status:string];
}

希望它对你有用。

于 2013-06-05T06:58:31.287 回答
3

You can change the color only after you change the defaultStyle to custom. For example, this will change the ring to green.

[SVProgressHUD setDefaultStyle:SVProgressHUDStyleCustom];
[SVProgressHUD setForegroundColor:[UIColor greenColor]];
[SVProgressHUD show];

Other customization methods are here on github.

于 2016-03-27T17:59:41.413 回答
1

MBProgressHUD https://github.com/jdg/MBProgressHUD也很棒。

更新: 试试这个:

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.color = [UIColor redColor];

您可以为 MBProgressHUD 创建类别,因此您不必在每次要使用它时都重新定义上述内容。例子:

+ (MBProgressHUD *)showFlashHUDMessageTo:(UIView *) view message:(NSString *) message duration:(NSInteger) duration animated:(BOOL) animated
{
    MBProgressHUD *flashMessage = [MBProgressHUD showHUDAddedTo:view animated:animated];
    [flashMessage setAnimationType:MBProgressHUDAnimationFade];
    [flashMessage setMode:MBProgressHUDModeText];
    flashMessage.labelText = message;
    [flashMessage setMinShowTime:duration];
    [MBProgressHUD hideHUDForView:view animated:animated];
    return flashMessage;
}

用于显示 X 持续时间的闪烁消息。您可以为每个场景自定义背景颜色等。希望您有所了解。

于 2013-06-05T07:20:14.953 回答
0

它可以自己SVProgressHUD完成

您需要的是一个标志,它显示您是显示错误还是成功。您要做的是 在SVProgressHUD.m文件中找出- (UIColor *)hudBackgroundColor方法

在那里你可以设置颜色

比如说:

if (obj.isError == 1) { //For Error Status
    return [UIColor colorWithRed:255 green:0 blue:0 alpha:1.0];
}
else if (obj.isError == 0) { //For Success Status
    return [UIColor colorWithRed:0 green:255 blue:0 alpha:1.0];
}
else {//The Default one OR whatever you like to Set for Loading indicator BG
     return [UIColor colorWithWhite:0 alpha:0.8];
}

希望这可以帮助

于 2013-06-05T12:49:03.717 回答