以堆叠视图显示图像

问题描述 投票:1回答:1

是否可以以编程方式从资产文件夹向uistackview显示图像?如果是这样,您将如何去做?

我已经知道如何创建一个充满标签的堆栈视图。

    fileprivate lazy var stack: UIStackView = {
        let stack = UIStackView(arrangedSubviews: [goalCompleteLabel, completeMoreGoalsLabel])
        stack.translatesAutoresizingMaskIntoConstraints = false
        stack.axis = .vertical
        return stack
    } ()
ios swift xcode uistackview
1个回答
0
投票

是。您只需要添加一个ImageView作为stackview的排列子视图。就像标签一样。这是代码-

class StackViewController: UIViewController {

  var stackView   = UIStackView()
  var label       = UILabel()
  var imageView   = UIImageView()

  override func viewDidLoad() {
    super.viewDidLoad()
    configStackView()
  }

  func configStackView() -> Void {

    // Add StackView as SubView
    view.addSubview(stackView)

    // Set StackView properties
    stackView.axis = .vertical
    stackView.alignment = .center
    stackView.distribution = .equalSpacing

    // Set imageView as 1st arranged subview of stackview
    stackView.addArrangedSubview(imageView)
    configImageView()

    // Set Label as 2nd arranged subview of stackview
    stackView.addArrangedSubview(label)
    configLabel()

    // Set StackView Constraints
    setStackViewCostraints()
  }

  func setStackViewCostraints() -> Void {
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true
    stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20).isActive = true
    stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    stackView.heightAnchor.constraint(equalToConstant: 200).isActive = true
  }


  func configImageView() -> Void {
    imageView.image = UIImage(named: "bolt")
    imageView.contentMode = .scaleAspectFit

    // Set Constraints (ideally in a separate function)
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
  }

  func configLabel() -> Void {
    label.text = "Label"
  }
}

这里是渲染方式-

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.