Без каких-либо взломов или сложных и, возможно, медленных пользовательских drawRect:
, это возможно, если вы группируете свои виды:
Создайте ограничивающий вид, который охватывает и содержит весь диалог.Само это представление не имеет видимого содержимого, а его backgroundColor понятен.Его альфа равен 1.0.
Теперь добавьте к этому все прозрачные представления (с альфа <1), которые вы хотите, а также добавьте непрозрачные представления.Будьте осторожны, чтобы не добавлять какие-либо непрозрачные виды в качестве подпредставлений прозрачных, вместо этого добавляйте их как прямые подпредставления ограничивающего вида.Таким образом, они унаследуют его альфа 1.0. </p>
UIView *progressDialogView = [[UIView alloc] initWithFrame:dialogFrame];
progressDialogView.backgroundColor = [UIColor clearColor];
progressDialogView.alpha = 1.0; //you can leave this line out, since this is the default.
UIView *halfTransparentBackgroundView = [[UIView alloc] initWithFrame:dialogFrame];
halfTransparentBackgroundView.backgroundColor = [UIColor blackColor]; //or whatever...
halfTransparentBackgroundView.alpha = 0.5;
[progressDialogView addSubview: halfTransparentBackgroundView];
UIView *progressBarView = [[UIView alloc] initWithFrame:progressBarFrame];
progressBarView.backgroundColor = [UIColor blueColor];
[progressDialogView addSubview: progressBarView];