iOS tableView實(shí)現(xiàn)頭部拉伸并改變導(dǎo)航條漸變色
本文實(shí)例為大家分享了iOS tableView實(shí)現(xiàn)頭部拉伸改變,導(dǎo)航條漸變色的具體代碼,供大家參考,具體內(nèi)容如下
#import "TableViewController.h" static NSString *ident = @"cell"; #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a] #define RGB(r,g,b) RGBA(r,g,b,1.0f) #define ZhuTiColor RGB(76,16,198) #define ZhuTiColorAlpha(alpha) RGBA(76, 16, 198, alpha) // 判斷是否是iPhone X #define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) // 狀態(tài)欄高度 #define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f) // 導(dǎo)航欄高度 #define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f) // tabBar高度 #define TAB_BAR_HEIGHT (iPhoneX ? (49.f + 34.f) : 49.f) // home indicator #define HOME_INDICATOR_HEIGHT (iPhoneX ? 34.f : 0.f) #define ScreenWidth ([UIScreen mainScreen].bounds.size.width) #define ScreenHeight ([UIScreen mainScreen].bounds.size.height) #define imageHight 200 @interface TableViewController () @property (nonatomic,strong) UIImageView *headImage; @property (nonatomic, strong) UIView *headerBackView; @property (nonatomic, strong) UIView *mengView; @end @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ident]; self.view.backgroundColor = [UIColor redColor]; self.tableView.tableHeaderView = self.headerBackView; [self.headerBackView addSubview:self.headImage]; [self.headImage addSubview:self.mengView]; [self navCleanFromAlpha:0]; } -(void)navCleanFromAlpha:(CGFloat)alpha { [self.navigationController.navigationBar setBackgroundImage:[self createImageWithColor:ZhuTiColorAlpha(alpha)] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [UIImage new]; } -(UIImage*) createImageWithColor:(UIColor*) color { CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; } -(UIImageView *)headImage { if(!_headImage) { _headImage= [[UIImageView alloc]initWithFrame: self.headerBackView.bounds]; _headImage.image = [UIImage imageNamed:@"1024"]; } return _headImage; } -(UIView *)mengView { if (!_mengView) { _mengView = [[UIView alloc]initWithFrame:self.headerBackView.bounds]; _mengView.backgroundColor = RGBA(1, 1, 1, 0.1); } return _mengView; } -(UIView *)headerBackView { if (!_headerBackView) { _headerBackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, imageHight)]; [_headerBackView setBackgroundColor:[UIColor lightGrayColor]]; } return _headerBackView; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { //---------------------- 圖片拉升 ------------------------- //圖片高度 CGFloat imageHeight = self.headerBackView.frame.size.height; //圖片寬度 CGFloat imageWidth = ScreenWidth; //圖片上下偏移量 CGFloat imageOffsetY = scrollView.contentOffset.y; // NSLog(@"圖片上下偏移量 imageOffsetY:%f ->",imageOffsetY); //上移 if (imageOffsetY < 0) { CGFloat totalOffset = imageHeight + ABS(imageOffsetY); CGFloat f = totalOffset / imageHeight; self.headImage.frame = CGRectMake(-(imageWidth * f - imageWidth) * 0.5, imageOffsetY, imageWidth * f, totalOffset); self.mengView.frame = self.headImage.bounds; } //------------------- 導(dǎo)航條顏色漸變 ---------------------------- CGFloat tableViewOffsetY = [self.tableView rectForSection:0].origin.y - NAVIGATION_BAR_HEIGHT; CGFloat contentOffsetY = scrollView.contentOffset.y; if (contentOffsetY >= tableViewOffsetY) { // scrollView.contentOffset = CGPointMake(0, tableViewOffsetY); //定位 [self navCleanFromAlpha:1]; } else { CGFloat alpha = scrollView.contentOffset.y/imageHight; if (alpha >= 1) { alpha = 1; } if (alpha <= 0) { alpha = 0; } NSLog(@"%.2f",alpha); [self navCleanFromAlpha:alpha]; } } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath]; // Configure the cell... cell.textLabel.text = [NSString stringWithFormat:@"asdada = %zd",indexPath.row]; return cell; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS開(kāi)發(fā)中使用cocos2d添加觸摸事件的方法
這篇文章主要介紹了iOS開(kāi)發(fā)中使用cocos2d添加觸摸事件的方法,cocos2d是制作iOS游戲的利器,需要的朋友可以參考下2015-10-10IOS給xcode工程關(guān)聯(lián)pod的實(shí)例詳解
這篇文章主要介紹了IOS給xcode工程關(guān)聯(lián)pod的實(shí)例詳解的相關(guān)資料,希望大家通過(guò)本文能實(shí)現(xiàn)這樣的需求,需要的朋友可以參考下2017-09-09iOS中的表單按鈕選項(xiàng)UIActionSheet常用方法整理
UIActionSheet經(jīng)常被用來(lái)制作各種彈出的選項(xiàng),這里我們就來(lái)看一下iOS中的表單按鈕選項(xiàng)UIActionSheet常用方法整理,需要的朋友可以參考下2016-06-06IOS 中l(wèi)oadView,viewDidLoad,viewDidUnload詳解及使用
這篇文章主要介紹了IOS 中l(wèi)oadView,viewDidLoad,viewDidUnload詳解及使用的相關(guān)資料,需要的朋友可以參考下2017-02-02在iOS App中實(shí)現(xiàn)地理位置定位的基本方法解析
這篇文章主要介紹了在iOS App中實(shí)現(xiàn)地理位置定位的基本方法解析,包括獲取當(dāng)前位置和計(jì)算兩點(diǎn)間距離等基本功能的實(shí)現(xiàn),需要的朋友可以參考下2016-05-05iOS Xcode自定義代碼塊及遷移的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS Xcode自定義代碼塊及遷移的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用iOS Xcode具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04iOS中修改UITextField占位符字體顏色的方法總結(jié)
這篇文章給大家分享了iOS中修改UITextField占位符字體顏色的三個(gè)方法,分別是使用attributedPlaceholder屬性、重寫(xiě)drawPlaceholderInRect方法和修改UITextField內(nèi)部placeholderLaber的顏色,下面我們一起來(lái)看看詳細(xì)的方法介紹。2016-09-09簡(jiǎn)單講解iOS應(yīng)用開(kāi)發(fā)中的MD5加密的相關(guān)使用
這篇文章主要介紹了iOS應(yīng)用開(kāi)發(fā)中的MD5加密的相關(guān)使用,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12iOS開(kāi)發(fā)教程之識(shí)別圖片中二維碼功能的實(shí)現(xiàn)
長(zhǎng)按識(shí)別二維碼這個(gè)功能相信對(duì)大家來(lái)說(shuō)都不陌生,最近工作中就遇到了這個(gè)需求,所以下面這篇文章主要給大家介紹了關(guān)于利用iOS識(shí)別圖片中二維碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07