scrollView 向下偏移64個點的問題以及 scrollView 縮放的問題
阿新 • • 發佈:2019-01-04
第一個問題:scrollView 向下偏移的問題
原因
在iOS7之前是沒有這個問題的,後來蘋果更新出自動適配,在控制器裡增加了一個新屬性automaticallyAdjustsScrollViewInsets預設為YES,通過字面意思大家應該就發現了,開啟ScrollView自動調整,就是如果是在nav下的ScrollView裡的子View會自動向下偏移64個點。
解決
不讓系統自動適配,將automaticallyAdjustsScrollViewInsets設定成NO。
程式碼:self.automaticallyAdjustsScrollViewInsets = NO;
或者 storyboard 設定:
第二個問題:scrollView 縮放問題
我們通常會將 imageView 放在 scrollView 裡通過代理方法實現圖片的縮放
//1、設定代理及縮放比例
_mainScrollView.delegate = self;
_mainScrollView.maximumZoomScale = 3.0;
_mainScrollView.minimumZoomScale = 1.0;
//2、實現代理方法 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return _mainImageView; }
到這裡就可以實現圖片的縮放了,但是你會發現縮放後圖片位置不是我們預想的那樣,而是會跑偏,這是因為圖片放大後,圖片的frame的 x、y值也會按比例縮放,所以就跑偏了。解決辦法就是要實現下面的代理方法。
- (void)scrollViewDidZoom:(UIScrollView *)scrollView { CGRect frame = self.mainImageView.frame; frame.origin.y = (self.mainScrollView.frame.size.height - self.mainImageView.frame.size.height) > 0 ? (self.mainScrollView.frame.size.height - self.mainImageView.frame.size.height) * 0.5 : 0; frame.origin.x = (self.mainScrollView.frame.size.width - self.mainImageView.frame.size.width) > 0 ? (self.mainScrollView.frame.size.width - self.mainImageView.frame.size.width) * 0.5 : 0; self.mainImageView.frame = frame; self.mainScrollView.contentSize = CGSizeMake(self.mainImageView.frame.size.width, self.mainImageView.frame.size.height); }