前幾天在開(kāi)發(fā)過(guò)程中遇到了scrollview不能滑動(dòng)的問(wèn)題沿侈,然后就順便總結(jié)了以下的幾個(gè)原因:
1岁诉、contentSize 這個(gè)屬性犹赖,比uiscrollview的frame要小, 無(wú)需滾動(dòng), 自然就滾動(dòng)不了魁巩。 scrollenabled 這個(gè)屬性牺汤,標(biāo)識(shí)著是否允許滾動(dòng),要言設(shè)成yes
2妓盲、如果這個(gè)scrollView是在IB里面生成的話,還得手動(dòng)設(shè)置它的contentSize,并且不能在initWithNibName:bundle:里面設(shè)置,因?yàn)?
The nib file you specify is not loaded right away. It is loaded the first time the view controller’s view is accessed. If you want to perform additional initialization after the nib file is loaded, override the viewDidLoad method and perform your tasks there.
3杂拨、在self.view上添加scrollview 能正常滾動(dòng),但再次添加其他的view的時(shí)候,就不能正常滾動(dòng)了,必須用下面的一個(gè)方法才行,很好用本橙。
-(void)viewDidLayoutSubviews{ [superviewDidLayoutSubviews]
附加:
viewDidLayoutSubviews
這個(gè)方法在controller的的子視圖的position和size被改變的時(shí)候被調(diào)用扳躬。
在view 已經(jīng)被設(shè)計(jì)好了它的subviews并且還沒(méi)有被展示在屏幕上時(shí)候脆诉,可以調(diào)用此方法改變這個(gè)view甚亭。
關(guān)鍵點(diǎn)是改變邊界。任何依賴于bounds击胜,并且需要去完成的操作都應(yīng)該放在viewDidLayoutSubviews中亏狰,而不是viewDidLoad或viewWillAppear中。
因?yàn)関iew的frame和bounds直到Auto Layout 已經(jīng)完成工作的時(shí)候才會(huì)被確定偶摔,所以在執(zhí)行完Auto Layout之后會(huì)調(diào)用此方法暇唾。