1、navigationBar的透明問題
如果僅僅把navigationBar的alpha設(shè)為0的話,那就相當于把navigationBar給隱藏了,大家都知道,父視圖的alpha設(shè)置為0的話,那么子視圖全都會透明的。那么相應(yīng)的navigationBar的標題和左右兩個按鈕都會消失。這樣顯然達不到我們要求的效果。
(1)如果僅僅是想要navigationBar透明,按鈕和標題都在可以使用以下方法:
forBarMetrics:UIBarMetricsDefault];//給navigationBar```
設(shè)置一個空的背景圖片即可實現(xiàn)透明,而且標題按鈕都在
細心的你會發(fā)現(xiàn)上面有一條線:
這就需要我們做進一步處理,把線去掉,如下方法即可:
```self.navigationController.navigationBar.shadowImage = [UIImage new];//其實這個線也是image控制的。設(shè)為空即可```
(2)如果你想在透明的基礎(chǔ)上實現(xiàn)根據(jù)下拉距離,由透明變得不透明的效果,那么上面那個就顯得力不從心了,這就需要我們采用另外一種方法了
//navigationBar是一個復(fù)合視圖,它是有許多個控件組成的,那么我們就可以從他的內(nèi)部入手
```[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;//這里可以根據(jù)scrollView的偏移量來設(shè)置alpha就實現(xiàn)了漸變透明的效果```
###2、navigationBar隱藏顯示的過度
一個頁面隱藏navigationBar,另一個不隱藏。兩個頁面進行push和pop的時候,尤其是有側(cè)滑手勢返回的時候,不做處理就會造成滑動返回時,navigationBar位置是空的,直接顯示一個黑色或者顯示下面一層視圖,很難看。這就需要我們加入過度動畫來隱藏或顯示navigationBar:
在返回后將要出現(xiàn)的頁面實現(xiàn)viewWillAppear方法,需要隱藏就設(shè)為YES,需要顯示就設(shè)為NO
```- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}```
###3、圖片處理只拿到圖片的一部分
```UIImage *image = [UIImage imageNamed:filename];
CGImageRef imageRef = image.CGImage;
CGRect rect = CGRectMake(origin.x, origin.y ,size.width, size.height);
//這里的寬高是相對于圖片的真實大小
//比如你的圖片是400x400的那么(0,0,400,400)就是圖片的全尺寸,想取哪一部分就設(shè)置相應(yīng)坐標即可
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect = [[UIImage alloc] initWithCGImage:imageRefRect];```