iOS Scrollview 的頭部view的拉伸伸縮效果

以前工作很忙,趕進度, 遇到一些需要的功能的話,就是簡單的上網(wǎng)找,找到后看懂代碼后,修修改改就用到項目中了。現(xiàn)在每天還是很忙,但還是特細抽出點時間把,學(xué)習(xí)點基礎(chǔ)知識, 把第三方的逐漸替換掉。


1、 先說拉伸放大的實現(xiàn)原理

scrollview的屬性介紹:

contentSize是scrollview可以滾動的區(qū)域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滾動,滾動區(qū)域為frame大小的兩倍。contentOffset是scrollview當(dāng)前顯示區(qū)域頂點相對于frame頂點的偏移量,比如上個例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480contentInset是scrollview的contentview的頂點相對于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是從scrollview的(0 ,100)開始顯示.

  • 首相自定義一個adjustView, 把adjustView添加到scrollview, 要減弱adjustView 和scrollview 的正常內(nèi)容的影響, 那么adjustView的Y值就不可能從0開始, 只能從-h(h建設(shè)為view1的高度)。

    - (void)reSizeView{
     //重置adjustView位置
     [adjustView setFrame:CGRectMake(0, -1*h,   CGRectGetWidth(adjustView.frame), h)];
     }
    

    但這樣運行會造成如下情況:


開始運行的時候看不到adjustView,向下拉的時候才會出現(xiàn),這時候就需要設(shè)置一下, scrollview的contentInset屬性就好了(屬性介紹看上面)。

  _scrollView.contentInset = UIEdgeInsetsMake(h, 0, 0, 0);

這樣運行起來,就可以看到scrollview上面的自定義adjustView;但是向下拉時,怎么讓圖片變大呢?
** 其實實現(xiàn)拉伸放大效果的最關(guān)鍵點是:UIImageView的contentMode屬性(UIViewContentModeScaleAspectFill),正式因為這個屬性,調(diào)整adjustView的大小的話,就可以改變圖片的大小 **

 img.contentMode= UIViewContentModeScaleAspectFill;
 img.clipsToBounds = YES;

所以可以通過監(jiān)聽scrollview 的滾動事件, 來改變adjustView的frame
scrollview的代理方法:
- (void)scrollViewDidScroll:(UIScrollView)scrollView
{
CGFloat offsetY = scrollView.contentOffset.y;
if(offsetY < h * -1) {
CGRect currentFrame = _expandView.frame;
currentFrame.origin.y = offsetY;
currentFrame.size.height = -1
offsetY;
img.frame = currentFrame;
} }
說明:img可是是上文說的adjustView,或者是adjustView的子控件。
當(dāng)然,如果你的自定義控件里面還要放label、button之類的話如下:

autoresizingMask屬性,自動調(diào)整子控件和父控件的位置、大小。 通過控制這個屬性可以達到你要的效果。這個屬性的語義:
http://www.cnblogs.com/jiangyazhou/archive/2012/06/26/2563041.html

2、 改變導(dǎo)航欄文字的顏色

如下:改變title的文字顏色和返回按鈕的顏色 , 要自己計算在代理里面的調(diào)用時機。

//  [self.navigationController.navigationBar lt_setBackgroundColor:    [color colorWithAlphaComponent:alpha]];
 [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor], NSForegroundColorAttributeName, [UIFont systemFontOfSize:17], NSFontAttributeName, nil]];
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容