在iOS中的UIView上加载时如何为UIActivityIndi​​cator设置灰色背景

时间:2011-11-03 21:36:34

标签: iphone ios uiactivityindicatorview viewdidload

我目前在屏幕上显示UIActivityIndicator一两秒钟。我想将背景设置为灰色,因为它出现在屏幕上,但我不知道该怎么做...

这是我到目前为止初始化指标的方法。

- (void)viewDidLoad
{
//...

    activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
    [activity setCenter:CGPointMake(160.0f, 208.0f)];
    [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];

    [self.tableView addSubview:activity];

    [activity startAnimating];

    [activity performSelector:@selector(stopAnimating) withObject:nil afterDelay:1.0];


}

非常感谢任何帮助。

9 个答案:

答案 0 :(得分:22)

无需单独查看。这是一个简单的机制:

    UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    self.activityIndicatorView = activity;
    // make the area larger
    [activity setFrame:self.view.frame;
    // set a background color
    [activity.layer setBackgroundColor:[[UIColor colorWithWhite: 0.0 alpha:0.30] CGColor]];
    CGPoint center = self.view.center;
    activity.center = center;
    [activity release];

答案 1 :(得分:14)

您应该查看SVProgressHUD

它具有屏蔽背景的选项,并且使用起来很简单。

SVProgressHUDMaskType具有

选项
enum {
 SVProgressHUDMaskTypeNone = 1, // allow user interactions, don't dim background UI (default)
SVProgressHUDMaskTypeClear, // disable user interactions, don't dim background UI
SVProgressHUDMaskTypeBlack, // disable user interactions, dim background UI with 50% translucent black
SVProgressHUDMaskTypeGradient // disable user interactions, dim background UI with translucent radial gradient (a-la-alertView)
};`

答案 2 :(得分:6)

尝试这种简单方法

 它对我有用....

- (void)viewDidLoad
{
    UIActivityIndicatorView *activityIndicator= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    activityIndicator.layer.cornerRadius = 05;
    activityIndicator.opaque = NO;
    activityIndicator.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];
    activityIndicator.center = self.view.center;
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
    [activityIndicator setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]];
    [self.view addSubview: activityIndicator];
}

答案 3 :(得分:3)

实际上我认为你可以更简单地做到这一点:)

[_activityIndicator setBounds:self.view.frame];
[_activityIndicator setCenter:self.view.center];
[_activityIndicator setAlpha:0.5f];
[_activityIndicator startAnimating];

您可以在故事板中设置背景颜色,也可以使用

以编程方式进行设置
    UIColor *activityBackgroundColor = [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0];
[_activityIndicator setColor:activityBackgroundColor];

确保选中活动指示器,在Xcode的属性检查器中选中“隐藏时隐藏”。

答案 4 :(得分:1)

您可以将视图放入窗口,其背景颜色为黑色,不透明度为0.5。将其放入窗口将阻止导航控制器和标签栏控制器。

答案 5 :(得分:0)

更简单的是,您可以将图层背景颜色设置为半透明黑色(或任何其他颜色):

self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
self.activityIndicatorView.layer.backgroundColor = [[UIColor colorWithWhite:0.0f alpha:0.5f] CGColor];
self.activityIndicatorView.hidesWhenStopped = YES;
self.activityIndicatorView.frame = self.view.bounds;
[self.view addSubview:self.activityIndicatorView];

当然,不要忘记:

#import <QuartzCore/QuartzCore.h>

这样旋转器也会保持不透明。

答案 6 :(得分:0)

@SVMRAJESH在 Swift 2.0

中回答
 let loadingIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
    loadingIndicator.layer.cornerRadius = 05

    loadingIndicator.opaque = false
    loadingIndicator.backgroundColor = UIColor(white: 0.0, alpha: 0.6)
    loadingIndicator.center = self.view.center;
    loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
    loadingIndicator.color = UIColor(red:0.6,green:0.8,blue:1.0,alpha:1.0)
    loadingIndicator.startAnimating()
    self.view.addSubview(loadingIndicator)

答案 7 :(得分:0)

从Xcode 8.3开始,有一种方法可以在故事板中执行此操作:

  1. 将活动视图添加到场景中,最好添加到视图中对象列表的底部,这样它就会显示在“所有内容的顶部”
  2. 通过添加约束
  3. 使其覆盖整个视图
  4. 单击“属性检查器”
  5. 启用“停止时隐藏”
  6. 设置“Alpha”&gt; 0(0.3很好)
  7. 将“背景”设置为深色(黑色效果很好)
  8. 这是screenshot

答案 8 :(得分:-1)

Swift 3

设置backgroundColor

[AuthorizePermission()]

创建和配置活动指标

activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor 

在viewDidLoad中,调用以下方法来创建和配置活动指示器,也不要忘记通过在viewDidLoad中调用var activityIndicatorView : UIActivityIndicatorView! // Declare variable to hold activity indicator 来添加到视图(您希望显示活动指示符的位置)。同时为它设置约束。

view.addSubview(activityIndicatorView)