1. 程式人生 > >iOS UITableView滑動使導航欄透明度漸變

iOS UITableView滑動使導航欄透明度漸變

//給導航條設定一個空的背景圖 使其透明化

[self.navigationController.navigationBar setBackgroundImage:[UIImagenew] forBarMetrics:UIBarMetricsDefault];

//去除導航條透明後導航條下的黑線

[self.navigationController.navigationBar setShadowImage:[UIImagenew]];

根據UITableView 的scrollViewDidScroll方法,我們能實時獲得contentOffset.y值,根據該值的變化對剛才擴充套件的UINavigationBar的背景色的alpha值,做相應的變化,具體實現:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {     CGFloat reOffset = scrollView.contentOffset.y + (kScreenH - 64) * 0.2;      CGFloat alpha = reOffset / ((kScreenH - 64) * 0.2);     if (alpha <= 1)//下拉永不顯示導航欄     {         alpha = 0;     }     else//上劃前一個導航欄的長度是漸變的     {         alpha -= 1;     }     // 設定導航條的背景圖片 其透明度隨  alpha 值 而改變     UIImage *image = [self imageWithColor:[UIColor colorWithRed:0.227 green:0.753 blue:0.757 alpha:alpha]];     [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; } /// 使用顏色填充圖片 - (UIImage *)imageWithColor:(UIColor *)color {     // 描述矩形     CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);     // 開啟點陣圖上下文     UIGraphicsBeginImageContext(rect.size);     // 獲取點陣圖上下文     CGContextRef context = UIGraphicsGetCurrentContext();     // 使用color演示填充上下文     CGContextSetFillColorWithColor(context, [color CGColor]);     // 渲染上下文     CGContextFillRect(context, rect);     // 從上下文中獲取圖片     UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();     // 結束上下文     UIGraphicsEndImageContext();     return theImage; }