我正在尝试在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];
感谢。
答案 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];
你想要它是什么黑色?