Как сделать полупрозрачный слой над текущим представлением?
Вероятно, вы видели это раньше, он стал чрезвычайно популярен в таких приложений, как ScoutMob. Я пытаюсь реализовать прозрачный вид на 60% при запуске, который будет охватывать мой домашний экран, объясняя, как использовать функции главного экрана и исчезает при нажатии.
У меня все мое приложение завершено (он использует .xib с момента его создания несколько лет назад, но также не стесняйтесь объяснять в формате раскадровки, так как я, скорее всего, повторно использую эту функцию в других приложениях iOS 5.0).
У меня нет проблем с созданием отдельных просмотров, но временное распределение одного поверх другого - это то, что я не понял интуитивно. Я продолжу исследования и включу любые полезные советы, которые я нахожу, если другие люди пытаются сделать то же самое.
Ответы
Ответ 1
// get your window screen size
CGRect screenRect = [[UIScreen mainScreen] bounds];
//create a new view with the same size
UIView* coverView = [[UIView alloc] initWithFrame:screenRect];
// change the background color to black and the opacity to 0.6
coverView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
// add this new view to your main view
[self.view addSubview:coverView];
когда вы закончите с ним, вы можете удалить его:
[coverView removeFromSuperview];
Версия Swift3:
// get your window screen size
let screenRect = UIScreen.main.bounds
//create a new view with the same size
let coverView = UIView(frame: screenRect)
// change the background color to black and the opacity to 0.6
coverView.backgroundColor = UIColor.black.withAlphaComponent(0.6)
// add this new view to your main view
self.view.addSubview(coverView)
чтобы удалить его:
coverView.removeFromSuperview()
Ответ 2
Это можно легко выполнить с помощью UITextView и UIButton. Просто разместите UITextView на экране с содержимым, которое вы хотите отобразить, сделав его полным размером кадра на экране, и измените цвет фона на черный фон с фоновой альфой .6
[UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6];
Затем поместите кнопку в качестве субвью сверху, сделав ее полным кадром на экране, и установите для нее значение альфа 0. Установите действие кнопки, чтобы скрыть текст и кнопку.
Пример:
UITextView* textview = [[UITextView alloc] initWithFrame:self.view.frame];
[textview setText: @"Text here"];
[textview setBackgroundColor: [UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6]];
[textview setTextColor: [UIColor whiteColor]];
[self.view addSubview: textview];
UIButton* btn = [[UIButton alloc] initWithFrame:self.view.frame];
[btn setAlpha:0];
[btn addTarget:self action:@selector(method) forEvent:UIControlEventTouchUpInside];
[self.view addSubview: btn];
Вы можете проверить метод addTarget:; Я не уверен, что это правильные параметры с головы.
Ответ 3
Просто создайте механизм, который определяет, является ли это первым запуском приложения, а затем указывает вашему главному контроллеру представления добавить (возможно, изображение) представление поверх текущего представления с 0,6 альфа
if (figureOutIfIsFirstLaunch)
{
UIImageView *myOverlay = [...];
myOverlay.frame = self.view.bounds;
myOverlay.alpha = 0.6;
[self.view addSubview:myOverlay];
}
Ответ 4
- создайте
UIView
, назовите его тем, что хотите (dimBackgroundUIView
), затем установите
цвет фона как черный и установите альфа 0,1 или 0,2 или....
- добавьте эти 2 строки кода, когда вам нужно
фон:
[self.view addSubview:dimBackgroundUIView]; [self
addConstraintsForDimView];
- и добавьте эти 2 строки кода, когда вы хотите удалить затемнение
background:
if(dimBackgroundUIView) [dimBackgroundUIView
removeFromSuperview];
- не забывайте добавлять ограничения (макеты) для
dimBackgroundUIView
.
проверьте это: iOS Исключительный фон при просмотре представления
и не забудьте прочитать примечание ниже кода, чтобы понять, что вам нужно делать.
Ответ 5
Обновление Swift 4
view.isOpaque = false
view.backgroundColor = UIColor.black.withAlphaComponent(0.2)
Эта опция доступна в раскадровке.
Обязательно снимите флажок "Непрозрачный"
![enter image description here]()