我看到在iOS 9中setStatusBarHidden(_:withAnimation:)
现在已被弃用,文档说要使用[UIViewController prefersStatusBarHidden]
来代替,但如果我仍想隐藏状态栏一个幻灯片动画?setStatusBarHidden(_:withAnimation :)在iOS 9中弃用
31
A
回答
75
参见preferredStatusBarUpdateAnimation
,
的Gif
代码
class ViewController: UIViewController {
var isHidden:Bool = false{
didSet{
UIView.animate(withDuration: 0.5) {() -> Void in
self.setNeedsStatusBarAppearanceUpdate()
}
}
}
@IBAction func clicked(sender: AnyObject) {
isHidden = !isHidden
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation{
return .slide
}
override var prefersStatusBarHidden: Bool{
return isHidden
}
}
13
夫特3
- 个计算变量已经被更新移动到
didSet
(斯威夫特3更换了一些功能 - 的动画功能已经更新过的语法
class ViewController: UIViewController {
var isHidden:Bool = false
@IBAction func clicked(sender: AnyObject) {
isHidden = !isHidden
UIView.animate(withDuration: 0.5) {() -> Void in
self.setNeedsStatusBarAppearanceUpdate()
}
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
override var prefersStatusBarHidden: Bool {
return isHidden
}
}
9
我已经清理狮子座的惊人的答案有点句法)。
class ViewController: UIViewController {
@IBAction func clicked(sender: AnyObject) {
statusBarHidden = !statusBarHidden
}
var statusBarHidden = false {
didSet {
UIView.animate(withDuration: 0.5) {() -> Void in
self.setNeedsStatusBarAppearanceUpdate()
}
}
}
override var prefersStatusBarHidden: Bool {
return statusBarHidden
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}
}
+0
我希望我会记得使用didSet时不时......我只习惯了我以前的编码方式,但这太好了:) – budidino
2
如果您正在使用Objective C的编码,这是解决方案:)(狮子座的目标C版本:P感谢的人!)
声明一个变量
bool isHidden;
isHidden = false;//in viewDidload()
,然后当你想隐藏状态栏
isHidden = true;
[UIView animateWithDuration:0.6 animations:^{
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}];
添加此代码后加这两方法
-(UIStatusBarAnimation) preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationFade;
}
-(BOOL) prefersStatusBarHidden
{ return isHidden;}
希望您的问题将是解决(笑)
1
- SWIFT 3备选
嗨,发现绕了对斯威夫特3,使用了一个非常巧妙的方式一个私有变量与每个覆盖对配对。 我的原帖:https://stackoverflow.com/a/42083459/7183483
但这里是它的JIST:
这里有一个片段:
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
get {
return .slide
}
}
private var statusBarStyle : UIStatusBarStyle = .default
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return statusBarStyle
}
}
private var statusBarStatus : Bool = false
override var prefersStatusBarHidden: Bool {
get {
return statusBarStatus
}
}
,然后我可以在一个函数调用,像这样:(这是我的一个例子,所以无视自定义函数)。
func sliderView(sliderView: SliderView, didSlideToPlace: CGFloat, within: CGFloat) {
let val = (within - (didSlideToPlace - sliderView.upCent))/(within)
print(val)
//Where you would change the private variable for the color, for example.
if val > 0.5 {
statusBarStyle = .lightContent
} else {
statusBarStyle = .default
}
UIView.animate(withDuration: 0.5, animations: {
sliderView.top.backgroundColor = UIColor.black.withAlphaComponent(val)
self.coverLayer.alpha = val
self.scroll.backgroundColor = colors.lightBlueMainColor.withAlphaComponent(val)
}, completion: {
value in
//If you do not call setNeedsStatusBarAppearanceUpdate() in an animation block, the animation variable won't be called it seems.
UIView.animate(withDuration: 0.4, animations: {
self.animating = true
//Where you set the status for the bar (your part of the solution)
self.statusBarStatus = false
//Then you call for the refresh
self.setNeedsStatusBarAppearanceUpdate()
})
})
}
+0
这是一个很好的解决方案。我没有想到使状态隐藏标志动态。 – phatmann
相关问题
- 1. -setStatusBarHidden:动画:已弃用
- 2. 是否在iOS 9上弃用了libMobileGestalt?
- 3. iOS 9中的sendAsynchronousRequest弃用并在iOS 10中与OperationQueue一起使用
- 4. 针对iOS 7的iOS 9弃用警告?
- 5. 警告有关sendsynchronousRequest:returningResponse:错误:已被弃用:在IOS 9-
- 6. scrollViewTexturedBackgroundColor在iOS 7.0中弃用
- 7. 弃用在iOS 6中
- 8. setDelegate在iOS 6中弃用
- 9. setStatusBarHidden在UIDocumentInteractionController的presentPreviewAnimated
- 10. Base64Encoding已弃用:iOS 7.0中已弃用
- 11. CFURLCreateStringByAddingPercentEscapes被弃用的iOS 9,我如何使用“stringByAddingPercentEncodingWithAllowedCharacters”
- 12. 修复UIPopoverController弃用问题iOS 9的自定义类问题
- 13. 在iOS 9
- 14. iOS 9在iOS 9中旋转后,UINavigation栏内容不居中?
- 15. iOS中的弃用常量
- 16. iOS中的弃用方法
- 17. finishWriting被弃用:在IOS 6.0
- 18. UIUserNotificationSettings在iOS的10弃用
- 19. 如何禁止弃用警告“dispatch_get_current_queue()已弃用......在iOS 6.0中”?
- 20. iOS中未调用updateSearchResultsForSearchController 9
- 21. AuthenticationMethodServerTrust在iOS中为零9
- 22. dismissmodalviewcontrolleranimated已弃用ios 6首先弃用
- 23. TopLayoutGuide和BottomLayoutGuide在iOS 11中弃用
- 24. searchDisplayController在iOS 8中已弃用
- 25. MPMediaItemArtwork init(图片:)在iOS 10.0中弃用
- 26. GKPeerPickerController在iOS 7中已被弃用
- 27. iOS中8和iOS 9
- 28. 根据iOS版本调用相应的setStatusBarHidden隐藏内容
- 29. directoryContentsAtPath弃用iOS 4
- 30. sizeWithFont IOS 7.0弃用
即使它在一个目标块中,我的动画并不会被激活。有任何想法吗? –
它是否适用于“基于视图控制器的状态栏外观”=否? –
没有测试,但是我猜这个按键是不行的 – Leo