以前工作很忙秉继,趕進度, 遇到一些需要的功能的話秕噪,就是簡單的上網(wǎng)找腌巾,找到后看懂代碼后铲觉,修修改改就用到項目中了∧煊模現(xiàn)在每天還是很忙,但還是特細抽出點時間把盐杂,學習點基礎(chǔ)知識链烈, 把第三方的逐漸替換掉挚躯。
1码荔、 先說拉伸放大的實現(xiàn)原理
scrollview的屬性介紹:
contentSize是scrollview可以滾動的區(qū)域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960)越败,代表你的scrollview可以上下滾動究飞,滾動區(qū)域為frame大小的兩倍巨双。contentOffset是scrollview當前顯示區(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 = -1offsetY;
img.frame = currentFrame;
} }
說明:img可是是上文說的adjustView稿静,或者是adjustView的子控件。
當然控漠,如果你的自定義控件里面還要放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];