2015-01-09 78 views
0

我一直在試圖設置一個imageView,而不會讓用戶看到它改變,當他們從風景旋轉到肖像模式。以編程方式設置圖像視圖,而用戶看不到它更改?

willAnimateRotationToInterfaceOrientation方法,我重新設置圖像到合適的圖像(取決於它是否在橫向模式或縱向模式:

if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { 
    NSLog(@"Going to Portrait Mode."); 

    UIImage *footerImage = [UIImage imageNamed:@"SchoolImageLandscape.png"]; 
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage]; 
    [self.tableView setTableFooterView:fView]; 



} else if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
    NSLog(@"Portrait Mode"); 
    UIImage *footerImage = [UIImage imageNamed:@"SchoolImage.png"]; 
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage]; 
    [self.tableView setTableFooterView:fView]; 
} 

不過,我遇到了一些麻煩確定如何使它用戶沒有看到這個變化,這意味着當它旋轉時,你會看到較大的圖像變成一個較小的圖像,我不想要這個,

有沒有人知道如何使過渡更加用戶友好?我也嘗試過設置imageView didRotateFromInterfaceOrientation的方法,並沒有比這更好的了。

回答

0

好的,我不知道是否有更好的方法來做到這一點。

我做了什麼:

willAnimateRotationToInterfaceOrientation方法,我做這個隱藏在tableFooterView:中,didRotateFromInterfaceOrientation方法然後

if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
    // hide the footer image so that the user doesn't see 
    // the image go from large image (landscape) to a smaller image 
    self.tableView.tableFooterView.hidden = YES; 

} 

,我決定

if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation)) { 
    NSLog(@"Going to Portrait Mode."); 

    UIImage *footerImage = [UIImage imageNamed:@"SchoolImage.png"]; 
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage]; 

    [self.tableView setTableFooterView:fView]; 

    // unhide the footer 
    self.tableView.tableFooterView.hidden = NO; 

    // set the alpha to 0 so you can't see it immediately 
    fView.alpha = 0.0f; 

    // Fade in the image 
    [UIView transitionWithView:fView 
         duration:1.0f 
         options:0 
        animations:^{ 
         fView.alpha = 1.0f; 
        } completion:nil]; 

} 

本作過渡看起來更好。

希望這可以幫助別人。如果有人有更好的想法,請隨時回答這個問題!

謝謝! =)

相關問題