欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS實(shí)現(xiàn)簡(jiǎn)單的頭部縮放功能

 更新時(shí)間:2018年08月22日 10:13:24   作者:yyuuzhu  
這篇文章主要介紹了iOS 簡(jiǎn)單的頭部縮放效果,頭部伴隨模糊效果放大縮小,并在一定位置時(shí)懸停充當(dāng)導(dǎo)航欄,本文給大家提供實(shí)現(xiàn)思路,需要的朋友可以參考下

本文通過(guò)實(shí)例代碼給大家介紹了iOS實(shí)現(xiàn)簡(jiǎn)單的頭部縮放功能。實(shí)現(xiàn)思路有頭部視圖,滾動(dòng)視圖,控制頭部動(dòng)畫等多個(gè)示例代碼塊,大家可以參考下本文。

簡(jiǎn)單實(shí)現(xiàn)并集成一個(gè)頭部縮放的功能,適用于UIScrollView以及其子類。

頭部伴隨模糊效果放大縮小,并在一定位置時(shí)懸停充當(dāng)導(dǎo)航欄。這里提供實(shí)現(xiàn)思路,如有符合可直接使用。

效果如下圖。

 

實(shí)現(xiàn):

首先分解為兩部分,一部分為頭部視圖,一部分為滾動(dòng)視圖。頭部視圖負(fù)責(zé)展示,滾動(dòng)視圖負(fù)責(zé)控制頭部視圖如何展示,比如放大和縮小。

一:頭部視圖

頭部視圖拆解為負(fù)責(zé)展示圖片的UIImageView,負(fù)責(zé)模糊效果的UIVisualEffectView,負(fù)責(zé)標(biāo)題顯示的UILabel,以及返回等功能按鈕的UIButton。

進(jìn)一步分析,模糊效果的視圖應(yīng)該和展示圖片的視圖做同樣的處理,同樣的縮放,為了更好的控制將其包裝到一containView中。跟據(jù)滾動(dòng)的位置改變containView的大小,模糊視圖根據(jù)滾動(dòng)的位置改變模糊的程度。標(biāo)題視圖在滾動(dòng)視圖到達(dá)一定位置時(shí)出現(xiàn)并停在那里。這里利用UIImageView的特性,改變它的contentMode為UIViewContentModeScaleAspectFill,這樣只用簡(jiǎn)單的改變圖片視圖的高度時(shí)就能營(yíng)造放大縮小的效果了。

UIImageView部分代碼

_blurImageView = [[UIImageView alloc] init];
_blurImageView.clipsToBounds = YES;
_blurImageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
_blurImageView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_blurImageView];

UIVisualEffectView部分代碼

UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
 _imageEffectView = [[UIVisualEffectView alloc]initWithEffect:beffect];
 _imageEffectView.alpha = 0;
_imageEffectView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
 [self addSubview:_imageEffectView];

二:滾動(dòng)視圖

滾動(dòng)視圖需要做的就是設(shè)置 contentInset ,讓出一部分空間給頭部視圖。這里如果將頭部視圖直接加到滾動(dòng)視圖上,無(wú)法做到頭部視圖最后懸停在一定位置,因此直接加到和滾動(dòng)視圖同級(jí)就行。

示例代碼

self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, kWindowWidth, kWindowHeight)];
  self.webView.backgroundColor = [UIColor clearColor];
  [self.view addSubview:self.webView];
  NSURL * url = [NSURL URLWithString:@"https://yongliangp.github.io/"];
  NSMutableURLRequest *re = [NSMutableURLRequest requestWithURL:url];
  [self.webView loadRequest:re];
  //初始化header
  self.headerView.headerImage = [UIImage imageNamed:@"saber.jpeg"];
  self.headerView.tittle = @"哈哈是個(gè)demo";
  self.headerView.isShowLeftButton = YES;
  self.headerView.isShowRightButton = YES;
  __weak typeof(self) weakSelf = self;
  self.headerView.leftClickBlock = ^(UIButton *btn){
    [weakSelf.navigationController popViewControllerAnimated:YES];
  };
  self.headerView.rightClickBlock = ^(UIButton *btn){
    NSLog(@"點(diǎn)擊了分享");
  };
  [self.webView.scrollView handleSpringHeadView:self.headerView];

三:控制頭部動(dòng)畫

和其他的滾動(dòng)視圖做動(dòng)畫一樣,實(shí)現(xiàn)滾動(dòng)視圖的代理方法scrollViewDidScroll,獲取偏移量,然后根據(jù)一定的規(guī)則做動(dòng)畫,這里為了解耦,也為了復(fù)用,使用了在scrollView的分類中監(jiān)聽scrollView的contentOffset方法去實(shí)現(xiàn)動(dòng)畫控制。

首先確定兩個(gè)臨界點(diǎn): 視圖的初始高度 懸停的高度。

示例代碼(簡(jiǎn)單控制)

- (void)yl_scrollViewDidScroll:(UIScrollView *)scrollView
{
  CGFloat offsetY = scrollView.contentOffset.y;
  if (offsetY>=-kNavHeight)
  {
    offsetY=-kNavHeight;
    if (self.headerView.frame.size.height!=kNavHeight)
    {
      self.headerView.frame = CGRectMake(0, 0, self.headerView.bounds.size.width, kNavHeight);
      [UIView animateWithDuration:0.25 animations:^{
        self.titleLabel.frame = CGRectMake(35, 20, self.bounds.size.width-35*2, 44);
        self.titleLabel.alpha = 1;
      }];
    }
  }else
  {
    self.headerView.frame = CGRectMake(0, 0, self.headerView.bounds.size.width, -offsetY);
    if (self.titleLabel.alpha!=0)
    {
      [UIView animateWithDuration:0.25 animations:^{
        self.titleLabel.frame = CGRectMake(35, 40, self.bounds.size.width-35*2, 44);
        self.titleLabel.alpha = 0;
      }];
    }
  }
  CGFloat alpha ;
  if (self.headerView.frame.size.height>=kWindowWidth/2)
  {
    alpha = 0;
  }else
  {
    alpha = 1-((self.headerView.frame.size.height-kNavHeight)/(kWindowWidth/2-kNavHeight));
  }
  if (alpha>=0&α<=1)
  {
    self.headerEffectView.alpha = alpha;
  }
}

最重要的,記得在控制器dealloc時(shí)移除監(jiān)聽者
最重要的,記得在控制器dealloc時(shí)移除監(jiān)聽者
最重要的,記得在控制器dealloc時(shí)移除監(jiān)聽者

或者你有更好的方式移除監(jiān)聽者請(qǐng)告訴我。

照例放Demo,僅供參考,如有問(wèn)題請(qǐng)留言

Demo地址:

https://github.com/yongliangP/YLSpringHeader 用心良苦請(qǐng) star

總結(jié)

以上所述是小編給大家介紹的iOS實(shí)現(xiàn)簡(jiǎn)單的頭部縮放功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • iOS 下拉刷新動(dòng)畫的實(shí)現(xiàn)實(shí)例

    iOS 下拉刷新動(dòng)畫的實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了iOS 下拉刷新動(dòng)畫的實(shí)現(xiàn)實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • iOS 模塊化之JLRoute路由示例

    iOS 模塊化之JLRoute路由示例

    這篇文章主要介紹了iOS 模塊化之JLRoute路由示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • iOS手勢(shì)密碼的實(shí)現(xiàn)方法

    iOS手勢(shì)密碼的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了iOS手勢(shì)密碼的實(shí)現(xiàn)方法,教會(huì)大家如何實(shí)現(xiàn)手勢(shì)密碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android開發(fā)筆記之簡(jiǎn)單基站定位程序的實(shí)現(xiàn)

    Android開發(fā)筆記之簡(jiǎn)單基站定位程序的實(shí)現(xiàn)

    這篇文章主要介紹了Android開發(fā)筆記之簡(jiǎn)單基站定位程序的實(shí)現(xiàn),詳細(xì)的介紹了基站定位其實(shí)很簡(jiǎn)單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • iOS中使用UISearchBar控件限制輸入字?jǐn)?shù)的實(shí)現(xiàn)方法

    iOS中使用UISearchBar控件限制輸入字?jǐn)?shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了iOS中使用UISearchBar控件限制輸入字?jǐn)?shù)的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • iOS?UITextView?實(shí)現(xiàn)類似微博的話題、提及用戶效果

    iOS?UITextView?實(shí)現(xiàn)類似微博的話題、提及用戶效果

    這篇文章主要介紹了iOS?UITextView?實(shí)現(xiàn)類似微博的話題、提及功能,基本思路是使用正則匹配出成對(duì)的#,再利用UITextView的富文本實(shí)現(xiàn)高亮效果,需要的朋友可以參考下
    2022-06-06
  • iOS關(guān)閉虛擬鍵盤方法匯總

    iOS關(guān)閉虛擬鍵盤方法匯總

    在iOS應(yīng)用開發(fā)中,有三類視圖對(duì)象會(huì)打開虛擬鍵盤,進(jìn)行輸入操作,但如何關(guān)閉虛擬鍵盤,卻沒(méi)有提供自動(dòng)化的方法
    2016-04-04
  • iOS兩丫技術(shù)之UILabel性能不夠的解決方法

    iOS兩丫技術(shù)之UILabel性能不夠的解決方法

    這篇文章主要介紹了iOS中控件UILabel性能不夠而自定義UILabel的過(guò)程,UILable是iPhone界面最基本的控件,主要用來(lái)顯示文本信息,下面通過(guò)本文我們來(lái)了解一下
    2022-08-08
  • iOS中tableview實(shí)現(xiàn)編輯、全選及刪除等功能的方法示例

    iOS中tableview實(shí)現(xiàn)編輯、全選及刪除等功能的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS中tableview實(shí)現(xiàn)編輯、全選及刪除等功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),不僅是介紹實(shí)現(xiàn)的方法,將實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題也都分享出來(lái)了,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • iOS 斷點(diǎn)上傳文件的實(shí)現(xiàn)方法

    iOS 斷點(diǎn)上傳文件的實(shí)現(xiàn)方法

    這項(xiàng)目開發(fā)中,有時(shí)候我們需要將本地的文件上傳到服務(wù)器,簡(jiǎn)單的幾張圖片還好,但是針對(duì)iPhone里面的視頻文件進(jìn)行上傳,為了用戶體驗(yàn),我們有必要實(shí)現(xiàn)斷點(diǎn)上傳。這篇文章主要介紹了iOS 斷點(diǎn)上傳文件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-12-12

最新評(píng)論