2012年11月18日 星期日

消滅status bar怨念產生的黑洞 ~ 以LUCY的美麗魔力 !

iPhone畫面的最上方,有個幾乎無時無刻存在的status bar,顯示著時間,電量,訊號強度等重要資訊。許多遊戲類的App會隱藏status bar,因為它們邪惡地想讓我們沉迷遊戲,忘了時間。而非遊戲類的App一般會顯示status bar,讓我們在操作App時仍然能夠知道電量,時間等重要資訊,而不用離開App查詢。

有沒有兩全其美的方法呢? 當然有,古人有點石成金,彼得潘有點螢幕殺status bar,感謝和彼得潘同月同日生的超人氣Model LUCY的合作,接下來我們將示範如何觸碰螢幕控制status bar的存亡,並且清除status bar怨念產生的黑洞。

一. 在畫面上加入按鈕,顯示"正在聞著新鮮空氣的LUCY"




- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
 
     
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, [UIScreen mainScreen].bounds.size.height)];
    button.imageView.contentMode = UIViewContentModeScaleAspectFill;
    [button setImage:[UIImage imageNamed:@"lucy.jpg"] forState:UIControlStateNormal];
    [self.view addSubview:button];
    [button addTarget:self action:@selector(buttonPressed:)
                     forControlEvents:UIControlEventTouchUpInside];
 
 
}
說明:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, [UIScreen mainScreen].bounds.size.height)];
設定button的高度為螢幕的高度,換句話說,在iPhone 4s時,是480 points,在iPhone 5時,是568 points。

二. 在按鈕被觸碰時,控制status bar的隱藏和現身

-(void)buttonPressed:(id)sender
{

    if([UIApplication sharedApplication].statusBarHidden)
    {
        [UIApplication sharedApplication].statusBarHidden = NO;
    }
    else
    {
        [UIApplication sharedApplication].statusBarHidden = YES;

    }
}
說明:
當status bar顯示時,點選按鈕叫它滾開,不想再看到它。
當status bar隱藏,而我們又開始思念它時,點選按鈕可以再把它追回來,讓它出現。

執行App:

status bar就像個聽話的女朋友,我們不想看到她時,點一下畫面她乖乖消失。我們想念她時,點一下畫面,她馬上出現。但是當她不在時,卻有個怪異的地方,原本她佔據的空間,變成一長條黑色的區塊(約20 points的高度)。看來一定是她可怕的怨念,留下那破壞畫面美感的黑洞。




三. 黑洞怨念形成的原因

讓我們來查查事情的真相,研究黑洞形成的原因吧。請加入以下的程式碼

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    NSLog(@"view %@", self.view);

}

當我們再一次執行App時,發現Log印出
view <UIView: 0x7125f50; frame = (0 20; 320 548); autoresize = RM+BM; layer = <CALayer: 0x7126530>>
謎底解開了,原來view controller的view一開始的起始y座標就在20,難怪status bar消失後,會留下高度20 points的黑洞。

四. 用LUCY佔滿螢幕的美麗消滅黑洞

還好status bar的怨念不像七夜怪談的貞子那麼可怕,不需要大法師,只要LUCY的美麗就能消滅它。LUCY的這張照片如此漂亮,值得佔滿整個螢幕。我們只要在剛剛的viewDidLoad method裡,將view controller的wantsFullScreenLayout設為YES,即可讓view controller的view佔滿螢幕,換句話說,起始點將是(0, 0),而不是(0, 20)

    self.wantsFullScreenLayout = YES;

執行App:

我們可以清楚看到,這次LUCY是完完全全佔滿螢幕的,所以status bar是重疊地覆蓋在她的上方。





也因為LUCY多了20 points的展示空間,所以這次她的鞋子沒有再不小心被切到了。若是回頭看看Log印出的訊息,可發現此時view controller的view果然從(0, 0)開始。
view <UIView: 0x7435ce0; frame = (0 0; 320 568); autoresize = RM+BM; layer = <CALayer: 0x74362c0>>



LUCY簡介:
粉絲團: Love LUCY Love 
生日:  2月7日 (和彼得潘一樣,好日子)
科系: 輔大心理系 ( 對人心有深入了解) 
星座: 水瓶座 ( 好星座,不是只有天秤座才出帥哥美女呀 )
職業: Model,代言/平面/網拍/廣告/主持/展場/活動
聯絡: lucy.chiayun@gmail.com



沒有留言:

張貼留言