? ? ? ?很多開發(fā)中,都需要適配不同的屏幕,因此,UIScrollView會用的比較多.這里,我說明一種UIScrollView的使用情況.
? ? ? ?由于我的界面有一些附件類型,比如聲音,圖片,文件之類的,用到了一個(gè)按鈕去展開和收起附件視圖,這個(gè)時(shí)候,就對UIScrollView的滾動有要求了,如果設(shè)定一個(gè)定值,沒有展開附件視圖的時(shí)候,視圖會滾動,流出大片空白.另外由于附件內(nèi)容不確定,多少也不確定,計(jì)算起來也比較麻煩,而且界面多了,每個(gè)界面都需要計(jì)算一次,比較麻煩.
? ? 解決辦法是: 在控制器的viewDidLayoutSubviews中,可以獲取視圖真實(shí)的frame(我使用的約束,在這里也可以得到正確的frame).同時(shí),viewDidLoad中也要寫上
-(void)viewDidLoad{
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
}
這樣,可以在viewDidLayoutSubviews中得到你最下面視圖的frame, 例如testView.
通過下面兩句設(shè)置scrollView的contentSize
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
CGFloat maxh = CGRectGetMaxY(self.testView.frame) ;
self.scrollView.contentSize = CGSizeMake(0, math);
}
注意: 獲取的是視圖frame的最大y值,你也可以自己添加多一點(diǎn),來控制scrollView的滾動范圍