Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在堆栈视图中显示图像_Ios_Swift_Xcode_Uistackview - Fatal编程技术网

Ios 在堆栈视图中显示图像

Ios 在堆栈视图中显示图像,ios,swift,xcode,uistackview,Ios,Swift,Xcode,Uistackview,是否可以通过编程方式将图像从assets文件夹显示到uistackview?如果是这样的话,你会怎么做呢 我已经知道如何创建充满标签的堆栈视图 fileprivate lazy var stack: UIStackView = { let stack = UIStackView(arrangedSubviews: [goalCompleteLabel, completeMoreGoalsLabel]) stack.translatesAutoresizin

是否可以通过编程方式将图像从assets文件夹显示到uistackview?如果是这样的话,你会怎么做呢

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

    fileprivate lazy var stack: UIStackView = {
        let stack = UIStackView(arrangedSubviews: [goalCompleteLabel, completeMoreGoalsLabel])
        stack.translatesAutoresizingMaskIntoConstraints = false
        stack.axis = .vertical
        return stack
    } ()

对。您只需添加一个
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"
  }
}
下面是它的渲染方式-


是的。您只需添加一个
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"
  }
}
下面是它的渲染方式-


首先在imageView中设置图像(在图像视图中设置其约束以更好地控制图像尺寸)和类控制器下的标签:

let image: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "yourImage")?.withRenderingMode(.alwaysOriginal)
    imageView.backgroundColor = .gray
    imageView.layer.cornerRadius = 8
    imageView.clipsToBounds = true
    imageView.contentMode = .scaleAspectFill
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.heightAnchor.constraint(equalToConstant: 200).isActive = true
    imageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
    return imageView
}()

let completeMoreGoalsLabel: UILabel = {
    let label = UILabel()
    label.text = "Dummytext"
    label.textAlignment = .center
    return label
}()
现在,按比例使用分布填充设置堆栈视图:

lazy var stack: UIStackView = {
    let stackView = UIStackView(arrangedSubviews: [image, completeMoreGoalsLabel])
    stackView.axis = .vertical
    stackView.distribution = .fillProportionally
    stackView.translatesAutoresizingMaskIntoConstraints = false
    return stackView
}()
在viewDidLoad中显示堆栈并添加约束:

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = .darkGray

    view.addSubview(stack)
    stack.widthAnchor.constraint(equalToConstant: 200).isActive = true
    stack.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    stack.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    stack.heightAnchor.constraint(equalToConstant: 250).isActive = true //200 imageHeight + 50 label height
}
我在图片上添加了圆角半径,使它更可爱


首先在imageView中设置图像(在图像视图中设置其约束以更好地控制图像尺寸)和类控制器下的标签:

let image: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "yourImage")?.withRenderingMode(.alwaysOriginal)
    imageView.backgroundColor = .gray
    imageView.layer.cornerRadius = 8
    imageView.clipsToBounds = true
    imageView.contentMode = .scaleAspectFill
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.heightAnchor.constraint(equalToConstant: 200).isActive = true
    imageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
    return imageView
}()

let completeMoreGoalsLabel: UILabel = {
    let label = UILabel()
    label.text = "Dummytext"
    label.textAlignment = .center
    return label
}()
现在,按比例使用分布填充设置堆栈视图:

lazy var stack: UIStackView = {
    let stackView = UIStackView(arrangedSubviews: [image, completeMoreGoalsLabel])
    stackView.axis = .vertical
    stackView.distribution = .fillProportionally
    stackView.translatesAutoresizingMaskIntoConstraints = false
    return stackView
}()
在viewDidLoad中显示堆栈并添加约束:

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = .darkGray

    view.addSubview(stack)
    stack.widthAnchor.constraint(equalToConstant: 200).isActive = true
    stack.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    stack.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    stack.heightAnchor.constraint(equalToConstant: 250).isActive = true //200 imageHeight + 50 label height
}
我在图片上添加了圆角半径,使它更可爱