我我會根據你寫的關於你對這個問題的意圖的評論給你一個答案。
解決方案
你可以得到的狀態欄由UIViewController
覆蓋方法prefersStatusBarHidden
側邊欄打開側邊欄(類似於鬆弛的應用程序)時消失。它應該是這樣的:
override func prefersStatusBarHidden() -> Bool {
return true
}
您還可以修改這個外觀與兩種方法:preferredStatusBarStyle
和preferredStatusBarUpdateAnimation
例
我做了一個簡單的項目來說明這一點。有可能以許多不同的方式實現一個側邊欄,所以我將這個例子基於popover。您的實施將取決於您如何實施側邊欄。
我做了一個簡單的故事板,每個都有兩個UIViewController
和一個UIButton
。當點擊第一個UIButton
時,它將觸發一個類型爲Present As Popover
的繼續,它將顯示第二個控制器。
第一個UIViewController
沒有代碼(一切都在故事板中完成),但第二個UIViewController
有隱藏狀態欄的代碼。
我附上了故事板的截屏以及下面第二個UIViewController
的代碼。
//
// PopController.swift
// SidebarHideStatus
//
// Created by Stefan Veis Pennerup on 31/01/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//
import UIKit
class PopController: UIViewController {
// MARK: - Storyboard actions
@IBAction func backButtonPressed(sender: UIButton) {
dismissViewControllerAnimated(true, completion: nil)
}
// MARK: - Status bar
override func prefersStatusBarHidden() -> Bool {
return true
}
}
UPDATE 1:OP使用UIView
而不是爲邊欄一個UIViewController
。
首先,我建議您將側欄分解爲單獨的UIViewController
,因爲它將使它在未來更加可重用,但這是一個完全不同的討論,可能會持續數日!
爲了隱藏狀態欄,您仍然需要使用之前突出顯示的回調方法,但您只需調用方法setNeedsStatusBarAppearanceUpdate
即可手動更新它。
我已經用下面的代碼更新了最初的UIViewController
,並刪除了segue以演示這種方法。
//
// ViewController.swift
// SidebarHideStatus
//
// Created by Stefan Veis Pennerup on 31/01/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
// MARK: - Properties
private var isSidebarShown = false
// MARK: - Storyboard outlets
@IBAction func buttonPressed(sender: UIButton) {
isSidebarShown = !isSidebarShown
setNeedsStatusBarAppearanceUpdate()
}
// MARK: - Status bar
override func prefersStatusBarHidden() -> Bool {
return isSidebarShown
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
// NOTE: This method has no effect now when
// using the method setNeedsStatusBarAppearanceUpdate()
return .Slide
}
}
我需要更改狀態欄的框架和[這](https://github.com/ndesai/InstagramStatusBarTest/blob/master/InstagramStatusBarTest/ViewController.m)是我唯一的出路在網上找到,它給了我一個不變的對象。我在哪裏可以訪問可變狀態欄框? – Jay
框架矩形定義狀態欄的區域。 (只讀)https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instp/UIApplication/statusBarFrame –
@LeoDabus,這意味着狀態酒吧幀不能在迅速操縱,但他們可以在Obj-c? – Jay