2012-03-20 20 views
9

मैंने एक ऐप बनाया है जो आईफोन के कैमरे को लागू करता है। जब उपयोगकर्ता अपनी छवि चुनने को समाप्त करता है, तो स्टेटस बार फिर से दिखाई देता है! मैं कैसे सुनिश्चित करूं कि स्टेटस बार छुपा रहता है?आईफोन - प्रोग्राम बार को प्रोग्रामेटिक रूप से हटाएं

-(IBAction)pickImage:(id)sender { 
UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 

picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
[self presentModalViewController:picker animated:YES]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
[picker dismissModalViewControllerAnimated:YES]; 
background.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

} 

मैं कुछ भी गलत कर रहा हूँ, तो कृपया इसे बाहर बिंदु:

यहाँ मेरी कोड है! धन्यवाद, रफी

+0

आप तो प्रारंभिक रूप से अपनी ऐप्स जानकारी में स्टेटस बार को छिपाने के लिए सेट करें। स्टेटस बार छुपा रहेंगे। –

+1

नहीं, स्टेटस बार छुपा नहीं रहेगा। मैंने अभी इस पर एक परीक्षण किया है; ऐसा लगता है कि यह एक बग प्रतीत होता है, जो UIImagePickerControllerSourceTypeSavedPhotosAlbum टाइप के साथ UIImagePicker के लिए ModalViewController को 100% डुप्लिकेट करने योग्य (कम से कम मेरे लिए) है। यह कैमरा और फोटो लाइब्रेरी के लिए नहीं होता है। –

उत्तर

29
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 

आप अगर सब पर एक और एनीमेशन शैली के लिए विकल्प चुन सकते हैं।

+0

वास्तव में UIKit में एक बग है, कि ओपी अनुभव कर रहा है। –

+0

निर्माण पूरी तरह से, अब ios 9 में पदावनत imagePicker –

+0

के साथ एक ही मुद्दा था – cdub

0

UIImagePicker से जुड़े UIViewController के खारिज तंत्र में एक बग प्रतीत होता है, एक स्रोत प्रकार = UIImagePickerControllerSourceTypeSavedPhotosAlbum के साथ।

dismissModalViewController करने के लिए कॉल (प्लस पूरा होने के साथ विधि :) UIApplication की स्थिति पट्टी छिपा संपत्ति तुरन्त नहीं करने के लिए हाँ से बदलता है, और इस पर कदम रख खारिज के पल में तैयार की है के पल ...

यह केवल उन ऐप्स के लिए वास्तव में स्पष्ट है जो पूर्ण-स्क्रीन दृश्य का उपयोग करते हैं। मेरा वर्तमान ऐप प्रोजेक्ट करता है, साथ ही मैं प्रस्तुत करने से पहले दृश्य नियंत्रक के दृश्य के फ्रेम को नियंत्रित करता हूं, इसलिए UIImagePicker पूर्ण स्क्रीन नहीं है। इसने बग को बहुत स्पष्ट बना दिया। मैंने कारण निर्धारित करने में 4-5 घंटे बिताए, और यह अंतिम निश्चित निष्कर्ष था, और बग स्रोत टाइप प्रकार और न ही फोटो लाइब्रेरी के लिए नहीं होता है।

तो अगर आप एक पूरी तरह से पूर्ण स्क्रीन अनुप्रयोग चाहते हैं और एक बग-मुक्त UIImagePicker प्रस्तुत करना चाहते हैं, UIImagePickerControllerSourceTypeSavedPhotosAlbum

20

से बचने iOS 7 में, वहाँ UIViewController, "prefersStatusBarHidden" पर एक विधि है। जब पिकर प्रदर्शित किया जाता है

- (BOOL) prefersStatusBarHidden 
{ 
    return YES; 
} 
0

ग्रांड सेंट्रल प्रेषण अपने दोस्त है, इस पद्धति का उपयोग आप बिल्कुल भी दिखाई स्थिति पट्टी नहीं देख पाएंगे: स्थिति बार छुपाने के लिए, अपनी दृश्य नियंत्रक के लिए इस विधि जोड़ सकते हैं और हाँ वापसी या बाद में

- (void)hideStatusBar 
{ 
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) 
    { 
     [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 
    } 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} 

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self hideStatusBar]; 
    double delayInSeconds = 0.2; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [self hideStatusBar]; 
    }); 
} 
4

इस मामले में, हम 2 का उपयोग कर रहे कदम

पहले चरण में: मान के साथ "देखें नियंत्रक आधारित स्थिति पट्टी उपस्थिति" "नहीं"

: Info.plist में जोड़ें

दूसरे चरण में: उपयोग/UIImagePickerController

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    if([navigationController isKindOfClass:[UIImagePickerController class]]) 
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
} 
1

के प्रतिनिधि के साथ इस कोड फोन आईओएस 7 के साथ और बाद में, आप छिपाने के लिए और स्थिति पट्टी को सामने लाने के लिए निम्न कोड का उपयोग कर सकते,

@interface ViewController() 

@property (nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden; 

@end 

@implementation ViewController 


    ... other codes 

- (BOOL)prefersStatusBarHidden { 
    return self.isStatusBarHidden; 
} 

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { 
    return UIStatusBarAnimationFade; 
} 

- (void)hideStatusBar { 
    self.statusBarHidden = YES; 
    [self setNeedsStatusBarAppearanceUpdate]; 
} 

- (void)showStatusBar { 
    self.statusBarHidden = NO; 
    [self setNeedsStatusBarAppearanceUpdate]; 
} 

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