Iphone 在iOS中加载UIView时如何为UIActivityIndicator设置灰色背景
我现在有一个Iphone 在iOS中加载UIView时如何为UIActivityIndicator设置灰色背景,iphone,ios,uiactivityindicatorview,viewdidload,Iphone,Ios,Uiactivityindicatorview,Viewdidload,我现在有一个UIActivityIndicator出现在屏幕上一两秒钟。我想设置灰色的背景,因为这在屏幕上出现,但我不知道如何做到这一点 以下是我到目前为止初始化指示器的方式 - (void)viewDidLoad { //... activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)]; [activity setCenter:CGPointM
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.5的视图放到窗口中。将其放入窗口将同时阻止导航控制器和选项卡栏控制器。您应该查看 它有掩蔽背景的选项,使用起来非常简单 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)
};`
不需要单独的视图。这里有一个简单的机制:
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];
事实上,我认为你可以做得更简单:) 可以在情节提要中设置背景色,也可以使用
UIColor *activityBackgroundColor = [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0];
[_activityIndicator setColor:activityBackgroundColor];
确保选中活动指示器后,在Xcode中的属性检查器中选中“停止时隐藏”。更简单的是,您可以将图层背景颜色设置为半透明黑色(或任何其他颜色): 当然,别忘了:
#import <QuartzCore/QuartzCore.h>
#导入
这样,微调器也将保持不透明。试试这个简单的方法。
这对我来说很有效
- (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];
}
@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)
从Xcode 8.3开始,在情节提要中有一种方法可以做到这一点:
这是一本。Swift 3 背景色
activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor
创建和配置活动指示器
var activityIndicatorView : UIActivityIndicatorView! // Declare variable to hold activity indicator
在viewDidLoad中,调用下面的方法来创建和配置活动指示器,也不要忘记通过调用viewDidLoad中的view.addSubview(activityIndicatorView)
来添加到视图中(您希望在其中显示活动指示器)。还要为其设置约束
func createAndconfigureActivityIndicatorView() {
activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor
activityIndicatorView.startAnimating() // To start animation
activityIndicatorView.hidesWhenStopped = true // Setting this true means, when you stop the activity indicator, its automatically hidden (see below)
}
// Stops and Hides Activity Indicator
activityIndicatorView.stopAnimating()
请澄清你所说的“背景灰显”是什么意思。你在整个屏幕上加了一个“阴影”吗?否则会让它黯然失色吗?或者更改要禁用的表视图行?或者别的什么?遮住整个视图,或者只遮住tableview,而不是navigationcontroller。我猜它是一种背景框,它是黑色的,不透明度设置为.5或者其他什么。。。我只是不知道,因为我以前从未见过这样做。。我正在四处寻找一个好方法的例子。。但它们很薄,而且介于…弥迦所说的,也是我所做的。我将代码放入AppDelegate中。每当我需要阻止UI时,我都会得到一个对AppDelegate的引用,并调用该方法来添加“地毯视图”,正如我喜欢称之为:)是的,我已经看过好几次了。。但是我想自己学习如何设置这个。。但是我想这可能是我应该在我的项目中使用的东西..只需查看该项目的源代码。最简单的方法是用半透明的黑色背景制作一个与窗口大小相同的“叠加”视图。然后将活动指示器添加为覆盖视图的子视图。是否可以使用计时器设置这些指示器?好的,非常感谢。。我想我现在要试试看。。因为它有一些很好的功能。[自执行选择器:@selector(showSpinner)with object:nil afterDelay:5];[自执行选择器:@selector(dismissspinner),对象:nil afterDelay:10];嗯,这看起来不错,但我在
[activity.layer…]
行中遇到了一个错误。它说“例如,Receiver type‘CALayer’方法是一个转发声明。”我将“activityIndicatorView”设置为我的VC的一个属性,我还需要做什么才能使它工作?编辑:另外,我使用的是ARC,所以我也没有最后一行。你包括QuartzCore.h了吗?
var activityIndicatorView : UIActivityIndicatorView! // Declare variable to hold activity indicator
func createAndconfigureActivityIndicatorView() {
activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor
activityIndicatorView.startAnimating() // To start animation
activityIndicatorView.hidesWhenStopped = true // Setting this true means, when you stop the activity indicator, its automatically hidden (see below)
}
// Stops and Hides Activity Indicator
activityIndicatorView.stopAnimating()