我有一張照片顯示的iOS應用程序中,用戶應該能夠查看和縮放圖像。根據要求,圖像應顯示在整個屏幕上(不應顯示透明部分,圖像應填滿整個屏幕),因此我自己使用AspectFill
模式爲UIImageView
。爲了實現縮放功能,使用UIScrollView
並實施viewForZoomingInScrollView
代表方法UIScrollView
。圖像視圖連接到StoryBoard
的滾動視圖的四個邊,並且兩個約束(imageHeight和imageWidth)連接到IBOutlet。這些約束將在ViewControllers viewDidLayoutSubviews
方法中更新。UIView裏面的滾動查看縮放問題
我已添加以下代碼供您參考。
- (void)setImageViewModes {
self.scrollView.minimumZoomScale = CALCULATD_ZOOM_SCALE;
self.pageImageView.contentMode = UIViewContentModeScaleAspectFill;
}
pragma mark - UIScrollView Delegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return MY_IMAGE_VIEW;
}
- (void)updateImageViewConstraints {
self.imageHeight.constant = CGRectGetHeight(self.scrollView.frame);
self.imageWidth.constant = CGRectGetWidth(self.scrollView.frame);
[self.view layoutIfNeeded];
}
然而,當我嘗試縮小圖像,則反彈到其初始狀態,並且在圖像的外側部分被修剪(它僅顯示圖像的初始填充部分)。是否有任何解決方法可用於在縮小時查看整個圖像?
我試着通過設置UIScrollView的最小縮放比例(我的代碼中有一個方法來計算圖像的最小縮放比例)和縮放功能。然而,當我們縮小時,UIIMage總是移動到滾動視圖的左上角(附上屏幕截圖供您參考)。
我通過子類化UIScrollView並在滾動視圖的'layoutSubviews'方法中調整圖像視圖框架,找到了此問題的解決方案Center content of UIScrollView when smaller(第三個答案)。這可以在縮小時正常工作。但是,當我們縮放並滾動圖像以查看邊緣/側面部分時,滾動視圖會將圖像視圖重新調整到中心位置,並且我無法在放大狀態下看到圖像的側面部分。有關此問題的任何解決方法?
你嘗試CGAffineTransformMake財產? – Vignesh