2015-11-25 14 views
14

के साथ व्यू कंट्रोलर से इंटरेक्टिव व्यू कंट्रोलर संक्रमण यहां मेरा demo project है।स्टेटस बार छुपा

मेरे पास दो दृश्य नियंत्रक हैं। मुख्य व्यक्ति में स्टेटस बार छुपा हुआ है जबकि दूसरा वाला नहीं है।

मैंने नियंत्रक से नियंत्रक को जाने के लिए एक कस्टम संचालित संक्रमण एनीमेशन बनाया है।

जब मैं बाल दृश्य नियंत्रक (नारंगी एक) पर हूं, तो मैं शीर्ष से नीचे पैनिंग द्वारा संचालित संक्रमण शुरू करता हूं। आप देख सकते हैं कि ड्रैग करते समय स्टेटस बार वापस आ रहा है। और UIButton "हैलो" भी आगे बढ़ रहा है।

मैं संक्रमण रद्द कर देता हूं। फिर मैं इसे फिर से शुरू करता हूं और आप देख सकते हैं कि स्टेटस बार भी वापस आ रहा है लेकिन इस बार, मेरा बटन नहीं चल रहा है, यह उसी स्थान पर रहता है, जैसे स्टेटस बार अभी भी छिपा हुआ था।

कोई विचार यह है कि संक्रमण कम से कम एक बार रद्द हो जाने के बाद ऐसा क्यों व्यवहार करेगा?

(मैं भी एनीमेशन के साथ अजीब बात है कि एक तरह से दोगुनी जब (शायद सिम्युलेटर के साथ एक बग रद्द के रूप में यह मेरे iphone 6 9.1 और मेरे iphone 5 8.4 पर यह भी नहीं करता है के बारे में बात नहीं कर रहा हूँ।)

enter image description here

+0

मैं इसे सिम्युलेटर के साथ एक समस्या है नहीं लगता। मैंने इसे एक आईफोन 6 (आईओएस 9) पर रखा और यह अभी भी एक मुद्दा था। – Fomentia

+0

क्या मेरा उत्तर आपकी समस्या का समाधान करता है? – FredLoh

+0

मेरे पास अभी तक इसे जांचने का समय नहीं है, मैं आपको ASAP बता दूंगा। फिर भी धन्यवाद। – Nico

उत्तर

4

जोड़ें: import Foundation

फिर एक आउटलेट जोड़ें: जब दृश्य गायब हो जाता है

class ViewController: UIViewController { @IBOutlet weak var topConstraint: NSLayoutConstraint! ... } तो 0 करने के लिए मूल्य बदल सकते हैं और फिर 20 जब वह दिखाई देगा:

override func viewWillAppear(animated: Bool) { 
    topConstraint.constant = 20.0 
} 

override func viewWillDisappear(animated: Bool) { 
    topConstraint.constant = 0.0 
} 

पूर्ण कोड (आउटलेट के लिए बाधा कनेक्ट करने के लिए याद करने के लिए सुनिश्चित करें):

import UIKit 
import Foundation 

class ViewController: UIViewController { 

    @IBOutlet weak var topConstraint: NSLayoutConstraint! 
    let controllerTransition = InteractiveControllerTransition(gestureType: .Pan) 
    let controllerTransitionDelegate = ViewController2Transition() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     controllerTransition.delegate = controllerTransitionDelegate 
     controllerTransition.edge = .Bottom 


    } 

    override func viewWillAppear(animated: Bool) { 
     topConstraint.constant = 20.0 
    } 

    override func viewWillDisappear(animated: Bool) { 
     topConstraint.constant = 0.0 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func unwindToViewController(sender: UIStoryboardSegue) { } 

    override func prefersStatusBarHidden() -> Bool { 
     return false 
    } 

    @IBAction func helloButtonAction(sender: UIButton) { 
//  let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
//  let vc = storyBoard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2 
//  
//  vc.transitioningDelegate = controllerTransition 
//  controllerTransition.toViewController = vc 
//  
//  self.presentViewController(vc, animated: true, completion: nil) 

     let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
//  let nvc = storyBoard.instantiateViewControllerWithIdentifier("NavigationViewController2") as! UINavigationController 
//  let vc = nvc.topViewController as! ViewController2 

     let vc = storyBoard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2 





//  nvc.transitioningDelegate = controllerTransition 
     vc.transitioningDelegate = controllerTransition 
     controllerTransition.toViewController = vc 

//  self.presentViewController(nvc, animated: true, completion: nil) 
     self.presentViewController(vc, animated: true, completion: nil) 

    } 

} 
+1

समस्या यह है कि यह वास्तविक समाधान की तुलना में एक हैक की तरह है और मुझे अभी भी समझ में नहीं आता कि यह ऐसा क्यों व्यवहार करता है ... लेकिन ऐसा लगता है :)। मैं 'topConstraint.constant = statusBarHeight' द्वारा 'topConstraint.constant = 20.0'' को बदल दूंगा और शीर्ष 'शीर्ष स्थिति को जोड़ सकता हूं BarHeight = UIApplication.sharedAplication()। StatusBarFrame.height' – Nico

संबंधित मुद्दे