2015-11-25 24 views
14

Đây là demo project của tôi.Điều khiển chế độ xem tương tác chuyển đổi từ bộ điều khiển chế độ xem với thanh trạng thái ẩn

Tôi có hai bộ điều khiển chế độ xem. Cái chính có thanh trạng thái ẩn trong khi thanh thứ hai thì không.

Tôi đã tạo một hoạt ảnh chuyển tiếp được điều khiển theo hướng tùy chỉnh để chuyển từ bộ điều khiển sang bộ điều khiển hai.

Khi tôi đang ở trên bộ điều khiển xem trẻ em (bộ màu cam), tôi bắt đầu chuyển đổi được điều khiển bằng cách xoay từ trên xuống dưới. Bạn có thể thấy thanh trạng thái đang quay lại khi kéo. Và UIButton "Hello" cũng đang chuyển.

Tôi hủy quá trình chuyển đổi. Sau đó, tôi bắt đầu lại và bạn có thể thấy thanh trạng thái cũng đang quay lại nhưng lần này, nút của tôi không di chuyển, nút này vẫn ở cùng một vị trí, như thể thanh trạng thái vẫn bị ẩn.

Bất kỳ ý tưởng nào tại sao nó sẽ hoạt động như thế này khi quá trình chuyển đổi đã bị hủy ít nhất một lần?

(Tôi thậm chí không nói về điều kỳ lạ với hoạt ảnh được tăng gấp đôi khi hủy (có thể là lỗi với trình mô phỏng vì nó không hoạt động trên iphone 6 9.1 và iphone 5 8.4 của tôi).)

enter image description here

+0

Tôi không nghĩ rằng đó là một vấn đề với các mô phỏng. Tôi đặt nó trên iPhone 6 (iOS 9) và nó vẫn là một vấn đề. – Fomentia

+0

Câu trả lời của tôi có giải quyết được vấn đề của bạn không? – FredLoh

+0

Tôi chưa có thời gian để kiểm tra, tôi sẽ cho bạn biết càng sớm càng tốt. Dù sao cũng cảm ơn bạn. – Nico

Trả lời

4

Add: import Foundation

Sau đó, thêm một ổ cắm:

class ViewController: UIViewController { @IBOutlet weak var topConstraint: NSLayoutConstraint! ... } Sau đó thay đổi giá trị 0 khi xem biến mất và sau đó đến 20 khi nó sẽ xuất hiện:

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

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

Full mã (hãy chắc chắn để nhớ để kết nối các hạn chế đối với các cửa hàng):

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

Vấn đề là nó giống như một hack hơn là một giải pháp thực sự và tôi vẫn không hiểu tại sao nó cư xử như thế này ... nhưng nó có vẻ làm việc :). Tôi sẽ thay đổi 'topConstraint.constant = 20.0' bằng' topConstraint.constant = statusBarHeight' và thêm vào đầu 'let statusBarHeight = UIApplication.sharedApplication(). StatusBarFrame.height' – Nico

Các vấn đề liên quan