我在同一個問題上奮鬥了一段時間,並將其跟蹤到縮放,並最終出現縮放後居中內容的錯誤。我的大部分帖子都在Swift(2.1)中,但是我的主要解決方案的鏈接在Obj-C中。我有兩個答案:
您可以在您的viewDidLoad()
(或您的Obj-C等價物)中設置scrollView.bouncesZoom = false
。這可以防止UIScrollView
能夠縮小超過最小縮放比例,從而當圖像處於最小縮放比例時,用戶無法通過捏取縮小圖像。
但是,更優雅的解決方案來自https://stackoverflow.com/a/2887298/2490299。本來,我centerScrollViewContents()
(在鏈接的答案又名scrollViewDidZoom()
)是:
func centerScrollViewContents() {
let boundsSize = scrollView.bounds.size
var contentsFrame = imageView.frame
if contentsFrame.size.width < boundsSize.width {
contentsFrame.origin.x = (boundsSize.width - contentsFrame.width)/2.0
} else {
contentsFrame.origin.x = 0.0
}
if contentsFrame.size.height < boundsSize.height {
contentsFrame.origin.y = (boundsSize.height - contentsFrame.height)/2.0
} else {
contentsFrame.origin.y = 0.0
}
imageView.frame = contentsFrame
}
顯然爲中心,通過改變框架的內容導致出現此問題。作爲參考,雨燕等同於上面鏈接的答案是:
func scrollViewDidZoom(scrollView: UIScrollView) {
let offsetX = max((scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5, 0.0)
let offsetY = max((scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5, 0.0)
imageView.center = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX,
scrollView.contentSize.height * 0.5 + offsetY)
}
希望這可以幫助你,如果你碰巧有同樣的問題,我是;這聽起來非常相似。
感謝您的詳細回覆,我忘記了我在這裏發佈了這個問題。幾個月前我解決了這個問題,我的解決方案與您的解決方案類似。當我有機會時,我會挖掘代碼並編輯我的問題來展示我的方法。再次感謝您的回答。 – bluewraith