我目前在屏幕上显示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];
}
非常感谢任何帮助。
答案 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开始,有一种方法可以在故事板中执行此操作:
这是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)