Ik weet dat dit onderwerp behoorlijk populair is, maar ik heb een klein probleem met een programmeertaal, het feit is dat ik nog steeds niet begrijp waar ik de code heb geplaatst. Nou, ik zal de hele zaak vertellen:
Ik probeer een modale Swift te maken die iets anders is dan normaal: door op een knop te klikken, wordt de ViewController weergegeven (volgens het modale type) op het scherm, maar met een transparante achtergrond. Alleen de blauwe weergave met label wordt weergegeven. Wanneer deze ViewController wordt gepresenteerd, heeft deze een transparante achtergrond, maar zodra deze de overgang voltooit, blijft deze op de zwarte achtergrond. Heb de ondoorzichtige optie al gedeactiveerd en enkele opties getest, maar niets deze probleemoplossing.
Sommigen kunnen me helpen?
De video is een test in de simulator van de zaak (https://www.youtube.com/watch?v =wT8Uwmq9yqY).
Ik begin met swift, en ik ben nog steeds behoorlijk verdwaald met hoe te programmeren in Xcode, ik las een antwoord op een vraag met de volgende code om dit op te lossen:
self.presentingViewController.providesPresentationContextTransitionStyle = YES;
self.presentingViewController.definesPresentationContext = YES;
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;
Waar plaats ik deze code?
Antwoord 1, autoriteit 100%
Je kunt het als volgt doen:
In je hoofdweergavecontroller:
func showModal() {
let modalViewController = ModalViewController()
modalViewController.modalPresentationStyle = .overCurrentContext
presentViewController(modalViewController, animated: true, completion: nil)
}
In uw modale weergavecontroller:
class ModalViewController: UIViewController {
override func viewDidLoad() {
view.backgroundColor = UIColor.clearColor()
view.opaque = false
}
}
Als je met een storyboard werkt:
Voeg gewoon een Storyboard Segue toe met Kind
ingesteld op Present Modally
aan uw modale weergavecontroller en stel op deze weergavecontroller de volgende waarden in:
- Achtergrond = Heldere kleur
- Tekening = Schakel het selectievakje Dekkend uit
- Presentatie = Over huidige context
Zoals Crashalotopmerkte in zijn opmerking: zorg ervoor dat de seguealleen Default
voor zowel Presentation
als Transition
. Door Current Context
te gebruiken voor Presentation
wordt de modal zwart in plaats van transparant te blijven.