ios «Загрузка данных» Уведомление с прозрачным фоном - PullRequest
1 голос
/ 29 февраля 2012

Я пытаюсь создать представление в iOS, чтобы пользователь знал, что его данные загружаются ... в центре должно быть прямоугольное окно с закругленными углами 200x200 со спиннером и надписью "Загрузка данных ..." и прозрачный фон.

Это все работает, за исключением того, что моя коробка с закругленными углами 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 ]

6 голосов
/ 29 февраля 2012

Нет точного ответа на ваш вопрос, но ознакомьтесь с открытым исходным кодом MBProgressHUD. Он нацелен на то, чтобы заменить открытый класс для частного UIProgressHUD класса, и это именно то, что вы пытаетесь сделать.

3 голосов
/ 29 февраля 2012

Решение для вашей проблемы состоит в том, что вы должны удалить альфа-атрибут 0,4, это то, что делает ваш круглый вид прозрачным, если ваш вид установлен на clearColor (это не совсем цвет,это просто делает вид прозрачным) нет смысла добавлять альфа 0,4.Если вам нужен полупрозрачный вид, окружающий ваш черный округлый вид, вы должны сделать следующее:

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

Это даст вам что-то белое или сероватое, которое должно работать.

Однако , я бы порекомендовал вам использовать GIDAAlertView Разработанный класс I, вы можете получить исходный код и пример приложения на моем GitHub:

Это занимает около 3 строкчтобы заставить его работать:

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

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

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

Вот как это выглядит как .

0 голосов
/ 29 февраля 2012

Вы говорите, чтобы было ясно ...

loadingDataView.backgroundColor = [UIColor clearColor];

Что вы хотите, чтобы он был черным?

...