2015年07月06日第五天筆記
2015年07月06日11:37:04
新知識
1.告訴scrollView控制元件的滾動的範圍 圖片不動的的
self.scrollView.contentSize = [UIImage [email protected]“yidong”].size;
2.在scrollView四周增加額外的滾動區域
self.scrollView.contentInset = UIEdgeInsetsMake(上,左,下,右);
3.滾到的位置(scrollView控制元件相對於內容的左上角)(邊距)
self.scrollView.contentOffset = CGPointMake(600 ,300);
4.是否顯示水平滾動條
self.scrollView.showHorizontalScrollIndicator = NO;
5.是否顯示垂直滾動條
self.scrollView.showVerticalScrollIndicator = NO;
6.是否展示彈簧效果
self.scrollView.bounces = NO;
7.取出當前滾到的位置
CGPoint point = self.scrollView.contentOffset;
8.設定滾到的位置
self.scrollView.contentOffset = CGPointMake(0. -self.headView.frame.size.height);
9.設定滾動的上下邊距(填充)
self.scrollView.contentInset = UIEdgeInsetsMake(self.headView.frame.size.height,0,self.footView.frame.size.height,0);
10.設定scrollView的代理為當前控制器
self.scrollView.delegate = self;
11.設定縮放比例:self.scrollView.minimumZoomScale 0.2;self.scrollView.maximumZoomScale = 2;
12.代理協議方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 是否有緩衝
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;//要縮放的View
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
13.如果UIScrollView無法滾動,可能是以下原因:
沒有設定contentSize
scrollEnabled = NO
沒有接收到觸控事件:userInteractionEnabled = NO
沒有取消autolayout功能(要想scrollView滾動,必須取消autolayout) (Xcode5.0)
[email protected](nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
設定UIScrollView是否能滾動
15.原理
當UIScrollView發生一系列的滾動操作時, 會自動通知它的代理(delegate)物件,給它的代理髮送相應的訊息,讓代理得知它的滾動情況
也就是說,要想監聽UIScrollView的滾動過程,就必須先給UIScrollView設定一個代理物件,然後通過代理得知UIScrollView的滾動過程
16.跟縮放相關的其他代理方法
縮放完畢的時候呼叫
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view
正在縮放的時候呼叫
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
17.分頁
只要將UIScrollView的pageEnabled屬性設定為YES,UIScrollView會被分割成多個獨立頁面,裡面的內容就能進行分頁展示
一般會配合UIPageControl增強分頁效果,UIPageControl常用屬性如下
一共有多少頁
@property(nonatomic) NSInteger numberOfPages;
當前顯示的頁碼
@property(nonatomic) NSInteger currentPage;
只有一頁時,是否需要隱藏頁碼指示器
@property(nonatomic) BOOL hidesForSinglePage;
其他頁碼指示器的顏色
@property(nonatomic,retain) UIColor *pageIndicatorTintColor;
當前頁碼指示器的顏色
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;
18.NSTimer
NSTimer叫做“定時器”,它的作用如下
在指定的時間執行指定的任務
每隔一段時間執行指定的任務
呼叫下面的方法就會開啟一個定時任務
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti //這個方法不能和其他滾動控制元件同時使用
target:(id)aTarget
selector:(SEL)aSelector
userInfo:(id)userInfo
repeats:(BOOL)yesOrNo;
每隔ti秒,呼叫一次aTarget的aSelector方法,yesOrNo決定了是否重複執行這個任務
通過invalidate方法可以停止定時器的工作,一旦定時器被停止了,就不能再次執行任務。只能再建立一個新的定時器才能執行新的任務
- (void)invalidate;
===解決兩個滑動控制元件同時作用時互不影響
NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
要新增到主執行迴圈
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
19.獲取控制元件邊緣單獨座標
CGFloat contentH = CGRectGetMaxY(self.iWantView.frame) + 10;
圖片輪播器思路歸納
UI設計
滾動控制元件,分頁控制元件
要用滾動先做一些準備
1)設定滾動的區域
2)設定需要分頁
3)設定不需要滾動條
4)設定代理
5)監聽開始滾動的動作:終止計時
6)監聽擡起手指的動作:啟動計時
7)監聽滾動後的動作:更新當前頁
方法實現
終止計時方法 [self.timer invalidate];
啟動計時方法
1)建立一個計時器(強引用) 同時指定時間到後要執行的換頁方法
2)加入主執行迴圈3)讓控制器弱引用 這樣組合即使計時器呼叫後不會被釋放,還能用
注意:建立一個計時器 直接讓控制器弱引用 當計時器呼叫後會被釋放,不能再用
更新當前頁的方法
1)細節當滑動圖片的一半時就更新
2)演算法:用滑動的控制元件的寬度除以圖片的大小:取整後四捨五入 round(a/b)
換頁方法
1)獲取當前頁判斷是否是最後一張,是則返回第一頁;否則下一頁
2)計算下次滑動的位置:當前頁碼*滾動控制元件的寬度
3)動畫設定滾動控制元件到指定位置
[self.scrollView setContentOffset:CGPointMake(moveX, 0) animated:YES];
動態新增字控制元件
1)動態合成圖片名稱生成UIImageView控制元件
2)計算圖片控制元件的frame:
x=滾動控制元件的寬度*(i-1);
y=0;
w=滾動控制元件的寬度
h=滾動控制元件的高度
3)新增子控制元件到父控制元件
喜馬拉雅電臺思路歸納
UI設計
1.滾動控制元件
2.最底層的控制元件
3.頭部控制元件
4.尾部控制元件
滾動方法
1.設定滾動範圍是(0,50):就是左右不能滾,上下滾動50
2.設定上下邊距
3.設定初始的滾動位置