【发布时间】:2015-02-16 02:41:12
【问题描述】:
我搜索了很多关于UIScrollView 的文章,其中包含UIImageView,但都没有AutoLayout 信息。我所做的是:在UIViewController 中放置一个UIScrollView,约束为前10,前10,后50,尾10;在UIScrollView 内放置一个UIImageView,约束为前0,前0,下0,尾0。我想要的很简单:让我的UIImageView 适合我的UIScrollView,当应用程序第一次加载时,让我的@ 987654330@ 水平和垂直居中。现在我可以看到图像并且正好适合屏幕但是图像正好在UIScrollView的顶部。(注意:在这种情况下,我的图像在缩放到最小zoomScale后的宽度等于宽度UIScrollView,我的图片缩放到最小后的高度zoomScale小于UIScrollView的宽度。)
我真的无法将我的UIImageView 垂直移动到UIScrollView 的中心,也找不到出错的地方。非常感谢。
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func centerScrollViewContents() {
let boundsSize = scrollView.bounds.size
var contentsFrame = imageView.frame
if contentsFrame.size.width < boundsSize.width {
contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width) / 2.0
} else {
contentsFrame.origin.x = 0.0
}
if contentsFrame.size.height < boundsSize.height {
contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2.0
} else {
contentsFrame.origin.y = 0.0
}
}
override func viewDidLayoutSubviews() {
let myImage = UIImage(named: "7.jpg")
imageView.image = myImage
let weightScale = scrollView.bounds.size.width / myImage!.size.width
let heightScale = scrollView.bounds.size.height / myImage!.size.height
let minScale = min(weightScale, heightScale)
let imagew = myImage!.size.width * minScale
let imageH = myImage!.size.height * minScale
let imageRect = CGRectMake(0, 0, imagew, imageH)
imageView.frame = imageRect
scrollView.contentSize = myImage!.size
scrollView.maximumZoomScale = 1.0
scrollView.minimumZoomScale = minScale
scrollView.zoomScale = minScale
imageView.frame = imageRect
centerScrollViewContents()
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
}
【问题讨论】:
-
我认为是因为自动布局问题。我需要做什么?
标签: ios swift uiscrollview uiimageview autolayout