- 分頁功能(重點(diǎn))
如果圖片名稱有規(guī)律,尺寸也有規(guī)律,那么可以用for循環(huán) 創(chuàng)建imageView-
設(shè)置contentSize = CGSizeMake (圖片個(gè)數(shù)*W,H)
- 細(xì)節(jié):contentSize = CGSizeMake(圖片個(gè)數(shù)*H,O)高度設(shè)置0也可以
- O代表在垂直方向不能滾動(dòng)
-
隱藏滾動(dòng)條
- storyboard :showsHorzontal勾掉
- 代碼 :showsHorizontal
-
開啟分頁功能:pagingEnabled = YES
- 分頁標(biāo)準(zhǔn):以scrollView的尺寸為一頁
-
顯示頁碼
- storyboard:UIPage Control控件
- 因?yàn)閁IPage Control控件是scrollView的子控件會(huì)被scrollView擋住
- UIPageControl和scrollView同層級(jí),才不會(huì)被擋住
- storyboard:UIPage Control控件
-
監(jiān)聽滾動(dòng),改變頁碼
- currentPage
- 1.當(dāng)scrollView停止?jié)L動(dòng)的時(shí)候顯示頁碼(蘋果)
- scrollViewDidEndDraggin: willDecelerate:
- decelerate == NO
- 計(jì)算頁碼,設(shè)置頁碼
- decelerate == NO
- scrollViewDidEndDcelerating:
- 計(jì)算頁碼: 偏移量的x值除以scrollView的寬度
- 設(shè)置頁碼:currentPage = page
- scrollViewDidEndDraggin: willDecelerate:
- 2.哪邊圖片顯示比例大,就滾動(dòng)到哪一頁(示例程序)
- scrollViewDidScroll:
- 四舍五入:(int)(小數(shù) + 0.5)
- page = (int) (contentOffset.x /scrollView.size.W + 0.5)
- scrollViewDidScroll:
-
手動(dòng)設(shè)置總頁數(shù)
- numberOfPages = 圖片個(gè)數(shù)
- 圖片個(gè)數(shù)為1時(shí)候,隱藏pageControl
- 設(shè)置pageControl.alpha = 0.0
- pageControl.hidden = YES
- hidesForSinglePage = YES
-
pageControl顯示自定義的圖片
- 當(dāng)前頁顯示current
- 其他頁顯示other
- xcode6.4頭文件中有成員變量
- xcode6.4之后變成私有的屬性 - 私有:currentPageImage
- 私有:pageImage
- KVC:
- self.pageControl setValue:[UIImage imageNamed:@"current"]forKeyPath:@"_currentPageImage"
- self.pageControl setValue:[UIImage imageNamed:@"other"]forKeyPath:@"_pageImage"
-
每隔一段時(shí)間滾動(dòng)到下一頁
-
定時(shí)器:每隔一段時(shí)間做一件事情
- [NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:YES]
-
計(jì)算下一頁頁碼:當(dāng)前頁碼 + 1
- currentPage + 1
- setContentOffset: (頁碼*scrollView的寬度,0)animated:
-
- 補(bǔ)充:
- 定時(shí)器一直在工作,當(dāng)用戶想往前滾動(dòng)的時(shí)候,圖片卻一直往后滾動(dòng)
- 當(dāng)用戶操作界面的時(shí)候,讓定時(shí)器停止
-
scrollViewWillBeginDragging: 用戶即將拖拽scrollView
- 停止定時(shí)器
- 定義定時(shí)器屬性weak,內(nèi)部有一個(gè)看不見的指針在引用
- [self.timer invalidate]
- self.timer = nil(屬性是strong時(shí)才寫)
-
scrollViewDidEndDragging:用戶已經(jīng)停止拖拽
- 開啟定時(shí)器
- NSTimer scheduledTimerWithTimeInterval:
- 開啟定時(shí)器方法返回的是一個(gè)自動(dòng)執(zhí)行任務(wù)的定時(shí)器
最好將開啟定時(shí)器,停止定時(shí)器抽兩個(gè)方法
-
問題:頻繁創(chuàng)建、銷毀定時(shí)器對(duì)象
- 定時(shí)器特點(diǎn)決定的
-
- 注意定時(shí)器方法里,userInfo的作用
- 線程
- 線程:用來執(zhí)行任務(wù)的
- 特點(diǎn):同一時(shí)間只能執(zhí)行一個(gè)任務(wù)
- 主線程:程序一啟動(dòng),就會(huì)創(chuàng)建一條默認(rèn)的線程
- 作用:負(fù)責(zé)顯示刷新UI界面,處理與用戶的交互事件
- [[NSRunloop mainRunloop] addTimer:self.timer forMode:NSRunLoopCommonModes]將定時(shí)器添加到runLoop中
- 目的:不管主線程在做什么操作,都要分配一定的時(shí)間處理定時(shí)器
- NSDefaultRunLoopMode:默認(rèn),同一時(shí)間只能執(zhí)行一個(gè)任務(wù)
- NSRunLoopCommonModes:公用,分配一定的事件處理其他任務(wù)
- 多線程原理:1s——>一萬個(gè)0.0001s
- cpu在多個(gè)任務(wù)中來回快速切換
- 感覺同時(shí)執(zhí)行,那是假象
- 線程:用來執(zhí)行任務(wù)的