2016-06-06 6 views
3

У меня есть контроллер просмотра, который имеет фон представления, который должен быть полупрозрачным, и продолжайте показывать ниже. Я скорректировал непрозрачность в файле nib и попробовал как толкать контроллер представления в стек навигационной системы, так и представить его модально, но при загрузке предыдущее представление выгружается. Как я могу это решить?Представление контроллера представления с тусклым фоном

+0

Вам нужно сделать контроллер скриншота предыдущего вида и установить его на модально представлены контроллер представления в качестве фонового изображения – iSashok

+0

View Controllers в 'UINavigationController' не не выгружается до они выталкиваются, перемещаясь «назад». Можете ли вы рассказать о своей проблеме, добавив изображение проблемы и образ того, что вы ожидаете? –

+0

@RoboticCat Я вижу, что первое представление показано ниже того, что я представляю сверху во время анимации навигации, как если бы я надавил его на стек навигации или представил его по-разному, но когда эта анимация заканчивается и представление полностью занимает экран, первый вид «исчезает», а затем я вижу черный фон. – AppsDev

ответ

2

Вы можете использовать UIView вместо контроллера вида. Затем отрегулируйте цвет фона альфы.

+0

Это правильный ответ. Когда я пытаюсь всплывать над новым VC, оригинал исчезает, как только анимация заканчивается. Поэтому я скорее использую представление только для этого. – iOSdev

2

AppsDev,

Это то, что вы ищете приятель ??? Здесь Testing1234 является этикетка добавлен в parentViewController Me здесь является метка добавляется к childViewController, которая представлена ​​модально :)

enter image description here

Если ваш ответ да, вот как вы можете это сделать :) Предполагая, что вы uisng раскадровки я напишу ответ :) Если вы используете XIb не переживайте все эти свойства могут быть установлены программно, а :)

Основным моментом здесь является то, чтобы сделать modal presentationoverfull screen :)

Вот как вы можете сделать это :)

Перетащите SEGUE между вашими двумя ViewControllers :) сделать SEGUE представить ViewController модально и выберите следующие конфигурации :) enter image description here

Теперь выберите родительский ViewController который представит secondViewController и изменить его цвет фона на белый (или любой цвет вы хотите)

enter image description here

Теперь выберите SECO ndViewController, который должен быть представлен :) Выберите свой вид и установите его альфа 0,5 и цвета, чтобы очистить цвет, как показано ниже

enter image description here

Добавить anotherView в ViewController установить свой цвет на черный и альфа 0,5 или 0,6 в зависимости от вашей потребности в тени :)

enter image description here

Теперь добавьте какие бы просматривать компоненты, которые вы хотите добавить на нем работать, и вы будете себе из положить, как показано выше :)

Надеюсь, это поможет :)

+0

Да, я хочу что-то вроде этого, но я управляю отдельными файлами 'nib' – AppsDev

+0

@appsdev: не должен быть проблемой, не приятель :) Просто установите обратные цвета так, как это упоминалось, и, наконец, когда вы загружаете его программно, убедитесь, что вы представляете его узло и по всему экрану :) –

+1

Я установил 'UIModalPresentationStyle.OverFullScreen', но он не работает для меня: S – AppsDev

9

Это вы что искали?

View Controller A -> View Controller B (СИБ)

Swift < 3:

В View Controller A, добавьте следующую строку кода:

let viewControllerB = ViewControllerB(nibName: "ViewControllerB", bundle: nil) 
viewControllerB.modalPresentationStyle = .OverFullScreen 

presentViewController(viewControllerB, animated: true, completion: nil) 

И в View Controller B установите цвет фона view с colorWithAlphaComponent:

view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.7)   

Свифта ≥ 3:

Посмотреть контроллер А:

let viewControllerB = ViewControllerB(nibName: "ViewControllerB", bundle: nil) 
viewControllerB.modalPresentationStyle = .overFullScreen 

present(viewControllerB, animated: true, completion: nil) 

Посмотреть контроллер Б:

view.backgroundColor = UIColor.black.withAlphaComponent(0.7) 
+0

Awesome .. Работал для меня. . Спасибо @Anh Pham – PiyushRathi

2

Swift 3.0 код

let addIncidentViewController = self.storyboard?.instantiateViewController(withIdentifier: "addIncidentViewController") as! AddIncidentViewController 
addIncidentViewController.modalPresentationStyle = .overCurrentContext 
self.present(addIncidentViewController, animated: true) { 

    } 

И установить цвет фона с некоторыми альфа.

0

Swift3

Под viewWillAppear вы можете использовать:

self.view.alpha = 0.8 

А под viewWillDisappear вы можете использовать:

self.view.alpha = 1.0 
+0

Возможно ли, что этот ответ только заставляет фон черным ?. OP упомянул, что мнение все равно должно быть замечено, но когда я изменяю «альфа» представления, он просто черный. –

+0

Фон должен становиться черным только в том случае, если значение альфа-значения равно 0. В этом случае оно устанавливается на 0,8, чтобы фон был слегка затемнен. – Geniouse

0

(Swift 3) Лучшее решение для загрузки вид из xib, а затем добавить его в контроллер следующим образом:

let supportView = Bundle.main.loadNibNamed("YourXIB", owner: nil, options: nil)?[0] as! YourView 

    let viewController = UIViewController() 
    viewController.view = supportView 
    viewController.modalPresentationStyle = .overCurrentContext 

    present(viewController, animated: true, completion: nil)e 

А затем добавить прозрачность:

viewController.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.7)  
Смежные вопросы