2012-08-23 94 views
1

我實現了一個應用程序在全屏幕圖像顯示正常。iphone全屏導航欄位移

導航欄和狀態欄被隱藏幾秒鐘後,現在如果我關閉應用程序,然後再次打開它,導航欄在哪裏狀態欄導航欄

我上重疊屏幕上方移位想我必須改變有關的CGRect框架的東西

請,如果你想顯示狀態欄還是不幫我

#import "KTPhotoScrollViewController.h" 
#import "KTPhotoBrowserDataSource.h" 
#import "KTPhotoBrowserGlobal.h" 
#import "KTPhotoView.h" 

const CGFloat ktkDefaultPortraitToolbarHeight = 44; 
const CGFloat ktkDefaultLandscapeToolbarHeight = 33; 
const CGFloat ktkDefaultToolbarHeight = 44; 

#define BUTTON_DELETEPHOTO 0 
#define BUTTON_CANCEL 1 

@interface KTPhotoScrollViewController (KTPrivate) 
- (void)setCurrentIndex:(NSInteger)newIndex; 
- (void)toggleChrome:(BOOL)hide; 
- (void)startChromeDisplayTimer; 
- (void)cancelChromeDisplayTimer; 
- (void)hideChrome; 
- (void)showChrome; 
- (void)swapCurrentAndNextPhotos; 
- (void)nextPhoto; 
- (void)previousPhoto; 
- (void)toggleNavButtons; 
- (CGRect)frameForPagingScrollView; 
- (CGRect)frameForPageAtIndex:(NSUInteger)index; 
- (void)loadPhoto:(NSInteger)index; 
- (void)unloadPhoto:(NSInteger)index; 
- (void)trashPhoto; 
- (void)exportPhoto; 
@end 

@implementation KTPhotoScrollViewController 

@synthesize statusBarStyle = statusBarStyle_; 
@synthesize statusbarHidden = statusbarHidden_; 
@synthesize my_img, imgURL; 

- (void)dealloc 
{ 
    [nextButton_ release], nextButton_ = nil; 
    [previousButton_ release], previousButton_ = nil; 
    [scrollView_ release], scrollView_ = nil; 
    [toolbar_ release], toolbar_ = nil; 
    [photoViews_ release], photoViews_ = nil; 
    [dataSource_ release], dataSource_ = nil; 
    [super dealloc]; 
} 

- (id)initWithDataSource:(id <KTPhotoBrowserDataSource>)dataSource andStartWithPhotoAtIndex:(NSUInteger)index 
{ 
    if (self = [super init]) { 
    startWithIndex_ = index; 
    dataSource_ = [dataSource retain]; 

    // Make sure to set wantsFullScreenLayout or the photo 
    // will not display behind the status bar. 
    [self setWantsFullScreenLayout:YES]; 

    BOOL isStatusbarHidden = [[UIApplication sharedApplication] isStatusBarHidden]; 
    [self setStatusbarHidden:isStatusbarHidden]; 

    self.hidesBottomBarWhenPushed = YES; 
    } 
    return self; 
} 

- (void)loadView 
{ 
    [super loadView]; 

    CGRect scrollFrame = [self frameForPagingScrollView]; 
    UIScrollView *newView = [[UIScrollView alloc] initWithFrame:scrollFrame]; 
    [newView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 
    [newView setDelegate:self]; 

    UIColor *backgroundColor = [dataSource_ respondsToSelector:@selector(imageBackgroundColor)] ? 
           [dataSource_ imageBackgroundColor] : [UIColor blackColor]; 
    [newView setBackgroundColor:backgroundColor]; 
    [newView setAutoresizesSubviews:YES]; 
    [newView setPagingEnabled:YES]; 
    [newView setShowsVerticalScrollIndicator:NO]; 
    [newView setShowsHorizontalScrollIndicator:NO]; 

    [[self view] addSubview:newView]; 

    scrollView_ = [newView retain]; 

    [newView release]; 

    nextButton_ = [[UIBarButtonItem alloc] 
        initWithImage:[UIImage imageNamed:@"nextIcon.png"] 
        style:UIBarButtonItemStylePlain 
        target:self 
        action:@selector(nextPhoto)]; 

    previousButton_ = [[UIBarButtonItem alloc] 
         initWithImage:[UIImage imageNamed:@"previousIcon.png"] 
         style:UIBarButtonItemStylePlain 
         target:self 
         action:@selector(previousPhoto)]; 

    UIBarButtonItem *msgButton = nil; 
    UIBarButtonItem *exportButton = nil; 

    exportButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction 
                   target:self 
                   action:@selector(exportPhoto)]; 

    msgButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks 
                   target:self 
                   action:@selector(msgPhoto)]; 

// UIImage *image = [UIImage imageNamed:@"Icon-Small"]; 
// UIButton *myMuteButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
// myMuteButton.bounds = CGRectMake(0, 0, image.size.width, image.size.height);  
// [myMuteButton setImage:image forState:UIControlStateNormal]; 
// [myMuteButton addTarget:self action:@selector(trashPhoto) forControlEvents:UIControlEventTouchUpInside];  
// UIBarButtonItem *myMuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myMuteButton]; 


    UIBarItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    NSMutableArray *toolbarItems = [[NSMutableArray alloc] initWithCapacity:7]; 

    if (exportButton) [toolbarItems addObject:exportButton]; 

    [toolbarItems addObject:space]; 
    [toolbarItems addObject:previousButton_]; 
    [toolbarItems addObject:space]; 
    [toolbarItems addObject:nextButton_]; 
    [toolbarItems addObject:space]; 

    if (msgButton) [toolbarItems addObject:msgButton]; 

// [toolbarItems addObject:myMuteBarButtonItem]; 
// [myMuteBarButtonItem release]; 

    CGRect screenFrame = [[UIScreen mainScreen] bounds]; 
    CGRect toolbarFrame = CGRectMake(0, 
            screenFrame.size.height - ktkDefaultToolbarHeight, 
            screenFrame.size.width, 
            ktkDefaultToolbarHeight); 
    toolbar_ = [[UIToolbar alloc] initWithFrame:toolbarFrame]; 
    [toolbar_ setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin]; 
    [toolbar_ setBarStyle:UIBarStyleBlackTranslucent]; 
    [toolbar_ setItems:toolbarItems]; 
    [[self view] addSubview:toolbar_]; 

    if (msgButton) [msgButton release]; 
    if (exportButton) [exportButton release]; 
    [toolbarItems release]; 
    [space release]; 
} 

- (void) ShowAlert:(NSString*)title MyMsg:(NSString*)msg{ 
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
    [alert show]; 
    [alert autorelease]; 
} 

- (void)setTitleWithCurrentPhotoIndex 
{ 
    NSString *formatString = NSLocalizedString(@"%1$i of %2$i", @"Picture X out of Y total."); 
    NSString *title = [NSString stringWithFormat:formatString, currentIndex_ + 1, photoCount_, nil]; 
    [self setTitle:title]; 
} 

- (void)scrollToIndex:(NSInteger)index 
{ 
    CGRect frame = scrollView_.frame; 
    frame.origin.x = frame.size.width * index; 
    frame.origin.y = 0; 
    [scrollView_ scrollRectToVisible:frame animated:NO]; 
} 

- (void)setScrollViewContentSize 
{ 
    NSInteger pageCount = photoCount_; 
    if (pageCount == 0) { 
     pageCount = 1; 
    } 

    CGSize size = CGSizeMake(scrollView_.frame.size.width * pageCount, 
          scrollView_.frame.size.height/2); // Cut in half to prevent horizontal scrolling. 
    [scrollView_ setContentSize:size]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    photoCount_ = [dataSource_ numberOfPhotos]; 
    [self setScrollViewContentSize]; 

    // Setup our photo view cache. We only keep 3 views in 
    // memory. NSNull is used as a placeholder for the other 
    // elements in the view cache array. 
    photoViews_ = [[NSMutableArray alloc] initWithCapacity:photoCount_]; 
    for (int i=0; i < photoCount_; i++) { 
     [photoViews_ addObject:[NSNull null]]; 
    } 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

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

    // The first time the view appears, store away the previous controller's values so we can reset on pop. 
    UINavigationBar *navbar = [[self navigationController] navigationBar]; 
    if (!viewDidAppearOnce_) { 
     viewDidAppearOnce_ = YES; 
     navbarWasTranslucent_ = [navbar isTranslucent]; 
     statusBarStyle_ = [[UIApplication sharedApplication] statusBarStyle]; 
    } 
    // Then ensure translucency. Without it, the view will appear below rather than under it. 
    [navbar setTranslucent:YES]; 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 

    // Set the scroll view's content size, auto-scroll to the stating photo, 
    // and setup the other display elements. 
    [self setScrollViewContentSize]; 
    [self setCurrentIndex:startWithIndex_]; 
    [self scrollToIndex:startWithIndex_]; 

    [self setTitleWithCurrentPhotoIndex]; 
    [self toggleNavButtons]; 
    [self startChromeDisplayTimer]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    // Reset nav bar translucency and status bar style to whatever it was before. 
    UINavigationBar *navbar = [[self navigationController] navigationBar]; 
    [navbar setTranslucent:navbarWasTranslucent_]; 
    [[UIApplication sharedApplication] setStatusBarStyle:statusBarStyle_ animated:YES]; 
    [super viewWillDisappear:animated]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [self cancelChromeDisplayTimer]; 
    [super viewDidDisappear:animated]; 
} 

- (void)deleteCurrentPhoto 
{ 
    if (dataSource_) { 
     // TODO: Animate the deletion of the current photo. 

     NSInteger photoIndexToDelete = currentIndex_; 
     [self unloadPhoto:photoIndexToDelete]; 
     [dataSource_ deleteImageAtIndex:photoIndexToDelete]; 

     photoCount_ -= 1; 
     if (photoCount_ == 0) { 
     [self showChrome]; 
     [[self navigationController] popViewControllerAnimated:YES]; 
     } else { 
     NSInteger nextIndex = photoIndexToDelete; 
     if (nextIndex == photoCount_) { 
      nextIndex -= 1; 
     } 
     [self setCurrentIndex:nextIndex]; 
     [self setScrollViewContentSize]; 
     } 
    } 
} 

- (void)toggleNavButtons 
{ 
    [previousButton_ setEnabled:(currentIndex_ > 0)]; 
    [nextButton_ setEnabled:(currentIndex_ < photoCount_ - 1)]; 
} 


#pragma mark - 
#pragma mark Frame calculations 
#define PADDING 20 

- (CGRect)frameForPagingScrollView 
{ 
    CGRect frame = [[UIScreen mainScreen] bounds]; 
    frame.origin.x -= PADDING; 
    frame.size.width += (2 * PADDING); 
    return frame; 
} 

- (CGRect)frameForPageAtIndex:(NSUInteger)index 
{ 
    CGRect bounds = [scrollView_ bounds]; 
    CGRect pageFrame = bounds; 
    pageFrame.size.width -= (2 * PADDING); 
    pageFrame.origin.x = (bounds.size.width * index) + PADDING; 
    return pageFrame; 
} 


#pragma mark - 
#pragma mark Photo (Page) Management 

- (void)loadPhoto:(NSInteger)index 
{ 
    if (index < 0 || index >= photoCount_) { 
     return; 
    } 

    id currentPhotoView = [photoViews_ objectAtIndex:index]; 
    if (NO == [currentPhotoView isKindOfClass:[KTPhotoView class]]) { 
     // Load the photo view. 
     CGRect frame = [self frameForPageAtIndex:index]; 
     KTPhotoView *photoView = [[KTPhotoView alloc] initWithFrame:frame]; 
     [photoView setScroller:self]; 
     [photoView setIndex:index]; 
     [photoView setBackgroundColor:[UIColor clearColor]]; 

     // Set the photo image. 
     if (dataSource_) { 
     if ([dataSource_ respondsToSelector:@selector(imageAtIndex:photoView:)] == NO) { 
      UIImage *image = [dataSource_ imageAtIndex:index]; 
      [photoView setImage:image]; 
     } else { 
      [dataSource_ imageAtIndex:index photoView:photoView]; 
     } 
     } 

     [scrollView_ addSubview:photoView]; 
     [photoViews_ replaceObjectAtIndex:index withObject:photoView]; 
     [photoView release]; 
    } else { 
     // Turn off zooming. 
     [currentPhotoView turnOffZoom]; 
    } 
} 

- (void)unloadPhoto:(NSInteger)index 
{ 
    if (index < 0 || index >= photoCount_) { 
     return; 
    } 

    id currentPhotoView = [photoViews_ objectAtIndex:index]; 
    if ([currentPhotoView isKindOfClass:[KTPhotoView class]]) { 
     [currentPhotoView removeFromSuperview]; 
     [photoViews_ replaceObjectAtIndex:index withObject:[NSNull null]]; 
    } 
} 

- (void)setCurrentIndex:(NSInteger)newIndex 
{ 
    currentIndex_ = newIndex; 

    if(newIndex>=0){ 
     myUrl = [dataSource_ imageURLAtIndex:currentIndex_ photoView:[photoViews_ objectAtIndex:currentIndex_]]; 
     myDescr = [dataSource_ imageDESCRAtIndex:currentIndex_ photoView:[photoViews_ objectAtIndex:currentIndex_]]; 
     img_Title =[dataSource_ imageimg_TitleAtIndex:currentIndex_ photoView:[photoViews_ objectAtIndex:currentIndex_]]; 
    } 

    [self loadPhoto:currentIndex_]; 
    [self loadPhoto:currentIndex_ + 1]; 
    [self loadPhoto:currentIndex_ - 1]; 
    [self unloadPhoto:currentIndex_ + 2]; 
    [self unloadPhoto:currentIndex_ - 2]; 

    [self setTitleWithCurrentPhotoIndex]; 
    [self toggleNavButtons]; 
} 


#pragma mark - 
#pragma mark Rotation Magic 

- (void)updateToolbarWithOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    CGRect toolbarFrame = toolbar_.frame; 
    if ((interfaceOrientation) == UIInterfaceOrientationPortrait || (interfaceOrientation) == UIInterfaceOrientationPortraitUpsideDown) { 
     toolbarFrame.size.height = ktkDefaultPortraitToolbarHeight; 
    } else { 
     toolbarFrame.size.height = ktkDefaultLandscapeToolbarHeight+1; 
    } 

    toolbarFrame.size.width = self.view.frame.size.width; 
    toolbarFrame.origin.y = self.view.frame.size.height - toolbarFrame.size.height; 
    toolbar_.frame = toolbarFrame; 
} 

- (void)layoutScrollViewSubviews 
{ 
    [self setScrollViewContentSize]; 

    NSArray *subviews = [scrollView_ subviews]; 

    for (KTPhotoView *photoView in subviews) { 
     CGPoint restorePoint = [photoView pointToCenterAfterRotation]; 
     CGFloat restoreScale = [photoView scaleToRestoreAfterRotation]; 
     [photoView setFrame:[self frameForPageAtIndex:[photoView index]]]; 
     [photoView setMaxMinZoomScalesForCurrentBounds]; 
     [photoView restoreCenterPoint:restorePoint scale:restoreScale]; 
    } 

    // adjust contentOffset to preserve page location based on values collected prior to location 
    CGFloat pageWidth = scrollView_.bounds.size.width; 
    CGFloat newOffset = (firstVisiblePageIndexBeforeRotation_ * pageWidth) + (percentScrolledIntoFirstVisiblePage_ * pageWidth); 
    scrollView_.contentOffset = CGPointMake(newOffset, 0); 

} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration 
{ 
    // here, our pagingScrollView bounds have not yet been updated for the new interface orientation. So this is a good 
    // place to calculate the content offset that we will need in the new orientation 
    CGFloat offset = scrollView_.contentOffset.x; 
    CGFloat pageWidth = scrollView_.bounds.size.width; 

    if (offset >= 0) { 
     firstVisiblePageIndexBeforeRotation_ = floorf(offset/pageWidth); 
     percentScrolledIntoFirstVisiblePage_ = (offset - (firstVisiblePageIndexBeforeRotation_ * pageWidth))/pageWidth; 
    } else { 
     firstVisiblePageIndexBeforeRotation_ = 0; 
     percentScrolledIntoFirstVisiblePage_ = offset/pageWidth; 
    }  

} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
             duration:(NSTimeInterval)duration 
{ 
    [self layoutScrollViewSubviews]; 
    // Rotate the toolbar. 
    [self updateToolbarWithOrientation:toInterfaceOrientation]; 

    // Adjust navigation bar if needed. 
    if (isChromeHidden_ && statusbarHidden_ == NO) { 
     UINavigationBar *navbar = [[self navigationController] navigationBar]; 
     CGRect frame = [navbar frame]; 
     frame.origin.y = 20; 
     [navbar setFrame:frame]; 
    } 
} 

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [self startChromeDisplayTimer]; 
} 

- (UIView *)rotatingFooterView 
{ 
    return toolbar_; 
} 


#pragma mark - 
#pragma mark Chrome Helpers 

- (void)toggleChromeDisplay 
{ 
    [self toggleChrome:!isChromeHidden_]; 
} 

- (void)toggleChrome:(BOOL)hide 
{ 
    isChromeHidden_ = hide; 
    if (hide) { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.4]; 
    } 

    if (! [self isStatusbarHidden]) {  
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 
     [[UIApplication sharedApplication] setStatusBarHidden:hide withAnimation:NO]; 
    } else { // Deprecated in iOS 3.2+. 
     id sharedApp = [UIApplication sharedApplication]; // Get around deprecation warnings. 
     [sharedApp setStatusBarHidden:hide animated:NO]; 
    } 
    } 

    CGFloat alpha = hide ? 0.0 : 1.0; 

    // Must set the navigation bar's alpha, otherwise the photo 
    // view will be pushed until the navigation bar. 
    UINavigationBar *navbar = [[self navigationController] navigationBar]; 
    [navbar setAlpha:alpha]; 

    [toolbar_ setAlpha:alpha]; 

    if (hide) { 
     [UIView commitAnimations]; 
    } 

    if (! isChromeHidden_) { 
     [self startChromeDisplayTimer]; 
    } 
} 

- (void)hideChrome 
{ 
    if (chromeHideTimer_ && [chromeHideTimer_ isValid]) { 
     [chromeHideTimer_ invalidate]; 
     chromeHideTimer_ = nil; 
    } 
    [self toggleChrome:YES]; 
} 

- (void)showChrome 
{ 
    [self toggleChrome:NO]; 
} 

- (void)startChromeDisplayTimer 
{ 
    [self cancelChromeDisplayTimer]; 
    chromeHideTimer_ = [NSTimer scheduledTimerWithTimeInterval:5.0 
                 target:self 
                selector:@selector(hideChrome) 
                userInfo:nil 
                 repeats:NO]; 
} 

- (void)cancelChromeDisplayTimer 
{ 
    if (chromeHideTimer_) { 
     [chromeHideTimer_ invalidate]; 
     chromeHideTimer_ = nil; 
    } 
} 


#pragma mark - 
#pragma mark UIScrollViewDelegate 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat pageWidth = scrollView.frame.size.width; 
    float fractionalPage = scrollView.contentOffset.x/pageWidth; 
    NSInteger page = floor(fractionalPage); 
    if (page != currentIndex_) { 
     [self setCurrentIndex:page]; 
    } 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    [self hideChrome]; 
} 


#pragma mark - 
#pragma mark Toolbar Actions 

- (void)nextPhoto 
{ 
    [self scrollToIndex:currentIndex_ + 1]; 
    [self startChromeDisplayTimer]; 
} 

- (void)previousPhoto 
{ 
    [self scrollToIndex:currentIndex_ - 1]; 
    [self startChromeDisplayTimer]; 
} 

- (void)msgPhoto 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:img_Title message:myDescr delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo { 

    NSString *message; 
    NSString *title; 
    if (!error) { 
     title = @"Done"; 
     message = @"image copied to your local gallery"; 
    } else { 
     title = @"Error"; 
     message = [error description]; 
    } 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 


- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) { 
     //save to gallery 
     UIImage *imageB = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: myUrl]]]; 
     UIImageWriteToSavedPhotosAlbum(imageB, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil); 

    } else if (buttonIndex == 1) { 
     //email 

     MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init]; 
     mailComposer.mailComposeDelegate = self; 
     mailComposer.toolbar.barStyle = UIBarStyleBlack; 
     mailComposer.title = @"Your title here"; 
     [[mailComposer navigationBar] setTintColor:[UIColor colorWithRed:124.0/255 green:17.0/255 blue:92.0/255 alpha:1]]; 

     if ([MFMailComposeViewController canSendMail]) { 

      [mailComposer setSubject:@"Look at a great image"]; 
      [mailComposer setMessageBody:[NSString stringWithFormat:@"%@",myUrl] isHTML:NO]; 

      UIImage *imageB = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: myUrl]]]; 
      NSData *exportData = UIImageJPEGRepresentation(imageB ,1.0); 
      [mailComposer addAttachmentData:exportData mimeType:@"image/jpeg" fileName:img_Title]; 

      [self presentModalViewController:mailComposer animated:YES]; 
     } 

     //release the mailComposer as it is now being managed as the UIViewControllers modalViewController. 
     [mailComposer release]; 

    } else if (buttonIndex == 2) { 
     //cancel 

    } 

    [self startChromeDisplayTimer]; 
} 

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    [self dismissModalViewControllerAnimated:YES]; 

    if (result == MFMailComposeResultFailed) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to send message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 
} 

- (void) exportPhoto 
{ 

    if ([dataSource_ respondsToSelector:@selector(exportImageAtIndex:)]) 
     [dataSource_ exportImageAtIndex:currentIndex_]; 

    [self startChromeDisplayTimer]; 

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Actions" 
                  delegate:self 
                cancelButtonTitle:@"Cancel" 
               destructiveButtonTitle:nil 
                otherButtonTitles:@"Save to gallery", @"Email",nil]; 
    [actionSheet showInView:[self view]]; 
    [actionSheet release];  
} 

@end 
+0

你也可以編輯你已經發布,以顯示你的想法是代碼與問題有關? – 2012-08-23 15:11:53

+0

問題是我不知道..對不起...我讀過這個問題可能在CGRect框架!對不起,我不知道在哪裏看,我是全新的.. – Alb

+0

解決任何給定的代碼是否可能影響問題的一種方法是使用NSLog的代碼來找出給定的代碼位是被稱爲。如果不是,那麼你可以認爲它與這個問題沒有關係(當然,除非你期望代碼被調用,而不是;-) – 2012-08-23 15:21:17

回答

2

首先,電話我。

如果你不希望顯示的話,在筆尖的控制器的,您可以選擇其視圖,並根據其屬性設置狀態欄NONE,塔爾時,它不會顯示狀態欄。 ..你可以設置vew大小爲(320 * 480),否則狀態欄將會是(320 * 460),20個像素將被保留用於狀態欄。

其他方式(不使用上面的方法)

可以從的info.plist還隱藏狀態欄,由物業UIStatusBarHidden屬性設置爲YES 。 (要隱藏狀態欄時,應用程序啓動)

編程可以做,加線的appDelegate的的applicationDidFinishLaunching方法,

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
+0

你好,親愛的,我只想說感謝您!你已經「救了我」:) – Alb

+1

這很簡單,我們都深入編碼,找出編碼的內容,但它只是設計問題lols :);) –