【问题标题】:Adding UIimageView to UIScrollView将 UIimageView 添加到 UIScrollView
【发布时间】:2015-06-29 21:17:30
【问题描述】:

我使用 UIScrollView 和 UIImageView 作为子视图。现在,缩放效果可以正常工作,但最初图像大小是方向错乱的,如屏幕截图所示。我应该怎么做才能让它进入中心。这是我的代码

@IBOutlet weak var scrollView: UIScrollView!
var imageView = UIImageView();
   override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.delegate = self
    imageView.frame = CGRectMake(16, 16, scrollView.frame.size.width, scrollView.frame.size.height)
    imageView.contentMode = UIViewContentMode.ScaleToFill
    imageView.image = UIImage(named: "abc.png")
    var imagee = UIImage(named: "abc.png")
    let size = imagee?.size
    //imageView.contentMode  = UIViewContentMode.ScaleAspectFit
    imageView.userInteractionEnabled = true
    scrollView.addSubview(imageView)
   scrollView.contentSize = size!
    let scrollViewFrame = scrollView.frame
    let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
    let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
    let minScale = min(scaleHeight, scaleWidth)

    scrollView.minimumZoomScale = minScale
    scrollView.maximumZoomScale = 1
    scrollView.zoomScale = minScale

    centerScrollViewContents()
    }
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
    }else{
        contentsFrame.origin.x = 0
    }

    if contentsFrame.size.height < boundsSize.height {

        contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2
    }else{
        contentsFrame.origin.y = 0
    }

    imageView.frame = contentsFrame

}

func scrollViewDidZoom(scrollView: UIScrollView) {
    centerScrollViewContents()
}

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
    return imageView
}

这是我最初获取图像的屏幕截图

【问题讨论】:

  • 您不应该在viewDidLoad 中进行与尺寸/位置相关的活动,因为尚未布置任何内容,并且宽度、高度等都会出错。最好在viewWillAppear 中进行,其中尺寸应该更正确。您可以添加视图,稍后再进行定位计算。

标签: ios swift uiscrollview uiimageview


【解决方案1】:

将您的centerScrollViewContents 方法放入viewWillAppear

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2011-01-31
    • 2012-02-14
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多