ScrollView swift 3中的垂直对齐图像

Posted

技术标签:

【中文标题】ScrollView swift 3中的垂直对齐图像【英文标题】:Vertical Align Images in ScrollView swift 3 【发布时间】:2016-10-04 11:02:58 【问题描述】:

我正在尝试在我的滚动视图中垂直对齐我的图像。不幸的是,我无法弄清楚问题所在。我认为这是数学上的东西,这不是我最擅长的事情。 :(

我希望有人可以帮助我解决这个问题。我还将在下面提供我的代码和问题的图像:

//
//  muscleListVC.swift
//  ActiveRest
//
//  Created by Fhict on 04/10/16.
//  Copyright © 2016 Kevin Vugts. All rights reserved.
//

import UIKit

class muscleListVC: UIViewController 

    var images = [UIImageView]()

    @IBOutlet weak var scrollView: UIScrollView!

    override func viewDidLoad() 
        super.viewDidLoad()



        print("Count: \(images.count)")

    

    override func viewDidAppear(_ animated: Bool) 
        super.viewDidAppear(animated)

        var contentHeight: CGFloat = 0.0
        let scrollHeight = scrollView.frame.size.height

        for x in 0...4 

            let image = UIImage(named: "muscle\(x).png")
            let imageView = UIImageView(image: image)
            images.append(imageView)

            var newX: CGFloat = 0.0
            newX = scrollHeight / 4 + scrollHeight * CGFloat(x) / 4
            print("the size is \(newX)")
            contentHeight += newX

            scrollView.addSubview(imageView)
            imageView.frame = CGRect(x: 0, y: newX, width: view.frame.size.width, height: 166)

            print("the content height: \(contentHeight)")
            scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: contentHeight)

        
        scrollView.clipsToBounds = false
    

非常感谢!

【问题讨论】:

没有得到您的问题,提供的图像有什么问题? @BharatModi 图像需要位于前 0 位置。目前,它们的位置略低于框架顶部。 你对 imageView 设置了哪些约束,你的实际要求是什么,如果图像数量是动态的并且你需要它们垂直滚动,那么你为什么不使用 tableView? 我建议不要手动设置滚动的高度/内容大小,让自动布局根据里面的内容自行计算。 @BharatModi 将约束设置为屏幕的所有边缘。所以它适用于所有尺寸的手机。图像计数是动态的。如果可能的话,我想为此目的使用滚动视图。 :D 【参考方案1】:

我不太确定您打算做什么,但我尝试稍微修改您的代码以使其正常工作。

override func viewDidLoad() 

        super.viewDidLoad()

        let numberOfImages = 5
        let imageViewHeight:CGFloat = 166.0
        scrollView.contentSize = CGSize(width: view.frame.size.width, height: imageViewHeight*(CGFloat)(numberOfImages))

        var newY:CGFloat = 0

        for x in 0...(numberOfImages-1) 

            let image = UIImage(named: "muscle\(x).png")
            let imageView = UIImageView(image: image)
            images.append(imageView)
            imageView.frame = CGRect(x: 0, y: newY, width: view.frame.size.width, height: imageViewHeight)
            newY = newY + CGFloat(imageViewHeight)
            scrollView.addSubview(imageView)

        


    

【讨论】:

您好,先生,这几乎就是我要找的东西,除了一件事。图 4 未显示。它仍然不在正确的位置。 (y: 0) 卷轴也不见了 你有五张图片吗? 我解决了:我有 5 张图片我添加了这行代码: 听起来不错。我还建议您阅读此tutorial,它很好地解释了 UIScrollView with Autolayout。

以上是关于ScrollView swift 3中的垂直对齐图像的主要内容,如果未能解决你的问题,请参考以下文章

excel中表格文字水平居中及垂直对齐方式居中怎么设置?选项具体在哪里?如下图:

UITableViewCell中的Swift ScrollView不滚动

ScrollView 文本对齐 SwiftUI

使用 Swift 在 NSTextField 中垂直对齐文本

如何垂直对齐textView中的文本? (迅速)

使用Swift在NSTextField中垂直对齐文本