Widzę, że w iOS 9 setStatusBarHidden(_:withAnimation:)
jest teraz przestarzałe, a dokumentacja mówi, że należy używać [UIViewController prefersStatusBarHidden]
, ale jaka jest alternatywa w iOS 9, jeśli nadal chcę ukryć pasek stanu animacja slajdów?setStatusBarHidden (_: withAnimation :) przestarzałe w iOS 9
Odpowiedz
Patrz preferredStatusBarUpdateAnimation
,
GIF
kod
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
}
}
Swift 3
- Obliczone zmienne zastąpić niektóre funkcje
- Funkcja ożywiony został Zaktualizowana składnia
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
}
}
mam wyczyszczone się zdumiewającą odpowiedź Leo nieco przesuwając aktualizację do didSet
(Swift 3 składnia).
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
}
}
Chciałbym pamiętać, aby użyć programu didSet od czasu do czasu ... Jestem przyzwyczajony do moich starych sposobów kodowania, ale to jest o wiele lepsze :) – budidino
jeśli kodowanie z Objective C, oto rozwiązanie:) (cel wersji Leo C: P Dzięki stary !!!)
zadeklarować zmienną
bool isHidden;
isHidden = false;//in viewDidload()
a następnie dodać ten kod, jeśli chcesz, aby ukryć pasek stanu
isHidden = true;
[UIView animateWithDuration:0.6 animations:^{
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}];
potem dodać dwie metody
-(UIStatusBarAnimation) preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationFade;
}
-(BOOL) prefersStatusBarHidden
{ return isHidden;}
Nadzieję problem będzie rozwiązać (uśmiech)
- SWIFT 3 ALTERNATYWNE
Hey guys, znaleźli wiele schludniejszy sposób będzie o tym Swift 3, stosując prywatne parowanie var z każdym z przesłonięć. mój oryginalny post: https://stackoverflow.com/a/42083459/7183483
ale tu jist niego:
Oto fragment:
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
}
}
które następnie mógłby zadzwonić w funkcję tak: (to jest jeden z moich przykładów , więc zignoruj funkcję niestandardową).
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()
})
})
}
To jest świetne rozwiązanie. Nie myślałem o tym, aby zmienić status flagi ukrytej na dynamiczny. – phatmann
- 1. IOS 9 NSURLConnection przestarzałe
- 2. NSYearCalendarUnit przestarzałe w iOS
- 3. OpenURL: przestarzałe w iOS 10
- 4. directoryContentsAtPath przestarzałe iOS 4
- 5. iOS 7 - region.center przestarzałe
- 6. CFURLCreateStringByAddingPercentEscapes jest przestarzałe w iOS 9, w jaki sposób korzystać z „stringByAddingPercentEncodingWithAllowedCharacters”
- 7. Alternatywa dla UIAlertView dla iOS 9?
- 8. GIDSignIn iOS 9
- 9. iOS 9 UIButton Inititalization
- 10. iOS 7 - UIPopoverController: przestarzałe strzały?
- 11. MPMusicPlayerController przestarzałe z iOS 6
- 12. searchDisplayController przestarzałe w systemie iOS 8
- 13. GKPeerPickerController jest przestarzałe w iOS 7
- 14. MKPolylineView initWithPolyLine: jest przestarzałe w iOS 7
- 15. Jak zaprezentować UIImagePickerController w Popover z iOS 9 i Swift
- 16. iOS 9 - Zasoby reklamowe niedostępna
- 17. Przestarzałe: Function eregi() jest przestarzałe w
- 18. iOS 9 Breaks animacje UILabel
- 19. iOS 9 Przedsiębiorstwo zweryfikować udało
- 20. MapKit iOS 9 detailCalloutAccessoryView use
- 21. UIAlertController nie działa w systemie iOS 9
- 22. Safari nie jest otwarte aplikacje na iOS w iOS 9
- 23. Metody analizatora składni SBJson iOS są przestarzałe?
- 24. iOS 8 CoreBluetooth przestarzałe metody RSSI
- 25. nieruchomość i metody iOS 6 iAd przestarzałe
- 26. TWTweetComposeViewController przestarzałe w IOS6
- 27. iOS 9 ATS i Firebase REST
- 28. iOS 9 Odroczona aktualizacja lokalizacji nie działa
- 29. Stan WKWebView na Cordova iOS 9?
- 30. iOS 9 Swift UIView nie ma członka
Moja animacja nie działa, mimo że znajduje się w bloku celu. Jakieś pomysły? –
Czy działa z opcją "Wyświetlanie paska stanu na podstawie kontrolera" = NIE? –
Nie testowałem, ale domyślam się, że nie działa, gdy ten klucz jest NIE – Leo