Как сделать полупрозрачный слой над текущим представлением? - программирование
Подтвердить что ты не робот

Как сделать полупрозрачный слой над текущим представлением?

Вероятно, вы видели это раньше, он стал чрезвычайно популярен в таких приложений, как ScoutMob. Я пытаюсь реализовать прозрачный вид на 60% при запуске, который будет охватывать мой домашний экран, объясняя, как использовать функции главного экрана и исчезает при нажатии.

У меня все мое приложение завершено (он использует .xib с момента его создания несколько лет назад, но также не стесняйтесь объяснять в формате раскадровки, так как я, скорее всего, повторно использую эту функцию в других приложениях iOS 5.0).

У меня нет проблем с созданием отдельных просмотров, но временное распределение одного поверх другого - это то, что я не понял интуитивно. Я продолжу исследования и включу любые полезные советы, которые я нахожу, если другие люди пытаются сделать то же самое.

4b9b3361

Ответ 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