關情紙尾---UIkit基礎-UIScrollView

一讨彼、UIScrolllView控件的簡單介紹

1.1.什么是UIScrollView
(1)移動設備的屏幕大小是極其有限的,因此直接展示在用戶眼前的內容也相當有限
(2)當展示的內容較多,超出一個屏幕時,用戶可通過滾動手勢來查看屏幕以外的內容
(3)普通的UIView不具備滾動功能,不能顯示過多的內容
(4)UIScrollView是一個能夠滾動的視圖控件,可以用來展示大量的內容,
    并且可以通過滾動查看所有的內容
(5)舉例:手機上的“設置”、其他示例程序 
1.2.UIScrollView的簡單使用方法
(1)將需要展示的內容添加到UIScrollView中
(2)設置UIScrollView的contentSize屬性,告訴UIScrollView所有內容的尺寸
    也就是告訴 它滾動的范圍(能滾多遠,滾到哪里是盡頭) 
1.3.UIScrollView的常用屬性
CGPoint contentOffSet
監(jiān)控目前控件滾動的位置

CGSize contentSize
滾動范圍的大小

UIEdgeInserts contentInsert
設置ScrollView的四周邊距

id<UIScrollerViewDelagate>delagate
設置協(xié)議

BOOL showsHorizontalScrollIndicator
控制是否顯示水平方向的滾動條

BOOL showsVerticalScrollIndicator
控制是否顯示垂直方向的滾動條

float minimumZoomScale
縮小的最小比例

float maximumZoomScale
放大的最大比例

BOOL bouncesZoom
控制縮放的時候是否會反彈
1.4.幾個常用屬性示意圖

<p></p>
<p>
<p></p>
<p>
<p>

<p>
<p>

1.5.如果無法滾動,可能存在以下原因
? 沒有設置contentSize
? scrollEnable = NO
? 沒有接收到觸摸事件:userInteractionEnabled = NO
? 沒有取消autolayout功能棵红。其實也可以用另一種方法代替取消autolayout功能危融。如下
 
在控制器的View當中寫上這一句代碼.
self.view.translatesAutoresizingMaskIntoConstraints = NO;
在自動布局的時候,它會自動轉一個東西.
它會把你的auotSize轉換成自動布局設置這句話告訴它不要將autosizing轉換成自動布局.
1.6.容易錯誤理解的地方
(1)UIScrollView的frame與contentsize屬性的區(qū)分:
    UIScrollView的frame指的是這個scrollview的可視范圍
   (可看見的區(qū)域)渡八,contentsize是其滾動范圍。
(2)contentinset(不帶*號的一般不是結構體就是枚舉)
    為UIScrollView增加額外的滾動區(qū)域碾盐。(上,左揩局,下毫玖,右)逆時針。
    contentinset可以使用代碼或者是視圖控制器進行設置凌盯,但兩者有區(qū)別(注意區(qū)分)付枫。
(3)contentsize屬性只能使用代碼設置。
(4)contentoffset是個CGpoint類型的結構體十气,用來記錄ScrollView的滾動位置励背,
     即記錄著“框”跑到了哪里。
     知道了這個屬性砸西,就知道了其位置叶眉,可以通過設置這個屬性來控制這個“框”的移動。
(5)不允許直接修改某個對象內部結構體屬性的成員芹枷,
    三個步驟(先拿到值衅疙,修改之,再把修改后的值賦回去)鸳慈。
(6)增加了額外區(qū)域后饱溢,contentoffset的原點在哪里?實際上是不包括額外區(qū)域的走芋。

二绩郎、UIScrollView的代理(delegate)

?很多時候潘鲫,我們想在UIScrollView正在滾動 或 滾動到某個位置 
 或者 停止?jié)L動 時做一些特定的操作

?要想完成上述功能,前提條件就是能夠監(jiān)聽到UIScrollView的整個滾動過程
 
?當UIScrollView發(fā)生一系列的滾動操作時肋杖, 會自動通知它的代理(delegate)對象溉仑,
 給它的代理發(fā)送相應的消息,讓代理得知它的滾動情況
 
?也就是說状植,要想監(jiān)聽UIScrollView的滾動過程浊竟,
  就必須先給UIScrollView設置一個代理對象,
  然后通過代理得知UIScrollView的滾動過程
 注:要想成為UIScrollView的delegate津畸,是有條件的振定,必須遵守相應的   協(xié)議
 實現(xiàn)對應的方法才能監(jiān)聽UIScrollView的滾動過程 

三、分頁

?只要將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;

四徘郭、NSTimer定時器

? NSTimer叫做“定時器”,它的作用如下
?在指定的時間執(zhí)行指定的任務
?每隔一段時間執(zhí)行指定的任務
 
? 調用下面的方法就會開啟一個定時任務
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)time
                                     target:(id)aTarget 
                                   selector:(SEL)aSelector 
                                   userInfo:(id)userInfo
                                    repeats:(BOOL)yesOrNo;
每隔time秒丧肴,調用一次aTarget的aSelector方法残揉,yesOrNo決定了是否重復執(zhí)行這個任務
 
? 通過invalidate方法可以停止定時器的工作,一旦定時器被停止了芋浮,就不能再次執(zhí)行任務抱环。
只能再創(chuàng)建一個新的定時器才能執(zhí)行新的任務
- (void)invalidate;

五、UIScrollView控件實現(xiàn)圖片縮放

5.1.關于縮放
有些時候纸巷,我們可能要對某些內容進行手勢縮放镇草,如下圖
UIScrollView不僅能滾動顯示大量內容,還能對其內容進行縮放處理瘤旨。
也就是說梯啤,要完成縮放功能的話,只需要將需要縮放的內容添加到UIScrollView存哲、
5.2.縮放原理
當用戶在UIScrollView身上使用捏合手勢時因宇,UIScrollView會給代理發(fā)送一條消息,
詢問代理究竟要縮放自己內部的哪一個子控件(哪一塊內容)
當用戶在UIScrollView身上使用捏合手勢時祟偷,
UIScrollView會調用代理的viewForZoomingInScrollView:方法
這個方法返回的控件就是需要進行縮放的控件察滑。
5.3.實現(xiàn)縮放功能
(1)控制器遵守代理協(xié)議<UIScrollView> 
(2)設置代理
(3)調用代理方法,返回需要實現(xiàn)縮放功能的子控件
(4)設置縮放的范圍(最大和最小比例)

//當用戶開始使用捏合手勢的時候
-(UIView *)viewForZoomingInScrolllView:(UIScrollView *)scrollView
{
  //返回的控件就是需要縮放的
  return self.mimoView;    //mimoView控件已經設置為一個屬性
}


//正在使用捏合手勢
-(void)scrollViewDidZoom:(UIScrollView *)scrollview{
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末修肠,一起剝皮案震驚了整個濱河市贺辰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖饲化,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莽鸭,死亡現(xiàn)場離奇詭異,居然都是意外死亡吃靠,警方通過查閱死者的電腦和手機蒋川,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩笆,“玉大人,你說我怎么就攤上這事缸浦∠Τ澹” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵裂逐,是天一觀的道長歹鱼。 經常有香客問我,道長卜高,這世上最難降的妖魔是什么弥姻? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮掺涛,結果婚禮上庭敦,老公的妹妹穿的比我還像新娘。我一直安慰自己薪缆,他們只是感情好秧廉,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拣帽,像睡著了一般疼电。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上减拭,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天蔽豺,我揣著相機與錄音,去河邊找鬼拧粪。 笑死修陡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的既们。 我是一名探鬼主播濒析,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啥纸!你這毒婦竟也來了号杏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盾致,沒想到半個月后主经,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡庭惜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年罩驻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护赊。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠遏,死狀恐怖,靈堂內的尸體忽然破棺而出骏啰,到底是詐尸還是另有隱情节吮,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布判耕,位于F島的核電站透绩,受9級特大地震影響,放射性物質發(fā)生泄漏壁熄。R本人自食惡果不足惜帚豪,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望草丧。 院中可真熱鬧狸臣,春花似錦、人聲如沸方仿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仙蚜。三九已至此洲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間委粉,已是汗流浹背呜师。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贾节,地道東北人汁汗。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像栗涂,于是被迫代替她去往敵國和親知牌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • 掌握 UIScrollView的常見屬性 UIScrollView的常用代理方法 UIScrollView的縮放 ...
    JonesCxy閱讀 2,720評論 1 12
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫斤程、插件角寸、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,059評論 4 62
  • ###四個收獲 1、要懂得作者的邏輯、架構扁藕、立場沮峡,然后站在他的角度來讀書,才會提升理解力亿柑。 2邢疙、文法、邏輯望薄、修辭這...
    Eco糯米閱讀 241評論 1 0
  • 竇唯由撕心裂肺到淺吟低唱疟游,由大開到大合,由放到收痕支,蛻變了幾層皮乡摹,自虐幾百道那是很明顯的,有覺是的味道采转。 我們在人生...
    縱情嬉戲天地間閱讀 276評論 0 0
  • 我覺得我像是犯了一個不可饒恕的錯誤,得不到原諒瞬痘。從他知道我欠信用卡那一刻起故慈,到今天,沒有說過一句讓我覺得寬心的話框全,...
    榛子那個女孩閱讀 132評論 0 0