具有透明背景的ios“数据加载”通知

时间:2012-02-29 03:28:02

标签: objective-c ios cocoa-touch uiview transparency

我正在尝试在iOS中创建一个视图,让用户知道他们的数据正在加载...它应该在中间有一个200x200的圆角框,带有一个微调器和“Data Loading ...”和透明的背景。

除了我的200x200圆角盒也透明外,这一切都正常。

以下是我正在使用的代码:

UIView *loadingDataView = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 320, 367)];
loadingDataView.alpha = 0.4;
loadingDataView.backgroundColor = [UIColor clearColor];
UIView *viewWithSpinner = [[UIView alloc] initWithFrame:CGRectMake(110, 106, 100, 100)];
[viewWithSpinner.layer setCornerRadius:15.0f];
viewWithSpinner.backgroundColor = [UIColor blackColor];
UILabel *msg = [[UILabel alloc] initWithFrame:CGRectMake(5, 75, 90, 20)];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(5, 5, 90, 70)];
spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
[spinner startAnimating];
msg.text = @"Data Loading";
msg.font = [UIFont systemFontOfSize:14];
msg.textAlignment = UITextAlignmentCenter;
msg.textColor = [UIColor whiteColor];
msg.backgroundColor = [UIColor clearColor];
viewWithSpinner.opaque = NO;
viewWithSpinner.backgroundColor = [UIColor blackColor];
[viewWithSpinner addSubview:spinner];
[viewWithSpinner addSubview:msg];
[loadingDataView addSubview:viewWithSpinner];
[self.view addSubview:loadingDataView];

感谢。

3 个答案:

答案 0 :(得分:6)

对您的问题没有完全答案,但请查看开源MBProgressHUD。它旨在成为私人UIProgressHUD课程的开源替代品,正是您正在尝试做的事情。

答案 1 :(得分:3)

您的问题的解决方案是您应该删除0.4的alpha属性,如果您的视图设置为clearColor,那么这会使您的圆视图变得透明(这不是真的一个颜色,它只是使视图透明)添加0.4的alpha是没有意义的。如果您想要的是围绕黑色圆角视图的半透明视图,则应执行以下操作:

[loadingDataView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:1 andAlpha:0.4]];

这会给你一些白色的灰色,这应该有效。

但是,我建议您使用我开发的GIDAAlertView类,您可以在我的GitHub上获取源代码和示例应用程序:

它需要大约3行才能使其正常工作:

GIDAAlertView *spinnerAlert=[[GIDAAlertView alloc] initAlertWithSpinnerAndMessage:@"GIDAAlertView Spinner"];

//Show it ...  
[spinnerAlert presentAlertWithSpinner];

//Later in your code, hide it 
[spinnerAlert hideAlertWithSpinner];

它的外观like

答案 2 :(得分:0)

你告诉它要清楚......

loadingDataView.backgroundColor = [UIColor clearColor];

你想要它是什么黑色?