菜鸟教程小白 发表于 2022-12-11 20:12:06

ios - 以编程方式约束


                                            <p><p>我在这个 View 上需要一点帮助。在实践中,我想减少绿色按钮的高度。我尝试以各种方式修复它,但要么使应用程序崩溃,要么它们无法正常工作。</p>

<p>谁能告诉我怎么解决?</p>

<p>有问题的 View 的屏幕截图:</p>

<p> <img src="/image/Lr2wKl.png" alt="View"/> </p>

<p>此时此处以编程方式。我必须降低高度的绿色部分称为“buttonShare”</p>

<pre><code>private extension DropPreviewView {

struct Constants {
    static let regionSpan: CLLocationDistance = 250
    static let cornerRadius: CGFloat = 10
    static let headerHeight: CGFloat = 60
}

func setupUI() {

    buttonShare.do {
      $0.backgroundColor = .green
      $0.addTarget(self, action: #selector(didTapOutsideView), for: .touchUpInside)
    }

    blurredBackgroundView.do {
      $0.effect = UIBlurEffect(style: .dark)
      let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapOutsideView))
      $0.addGestureRecognizer(tapGestureRecognizer)
    }

    spinner.do {
      $0.hidesWhenStopped = true
      $0.color = .darkGray
      $0.startAnimating()
    }

    contentView.do {
      $0.backgroundColor = .white
      $0.clipsToBounds = true
      $0.layer.cornerRadius = Constants.cornerRadius
    }

    dropPreviewImageView.do {
      $0.contentMode = .scaleAspectFill
      $0.clipsToBounds = true
      $0.isUserInteractionEnabled = true
      let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapOnPreviewImage))
      $0.addGestureRecognizer(tapGestureRecognizer)
    }
}

func arrangeSubviews() {

    addSubview(blurredBackgroundView, constraints: [
      blurredBackgroundView.topAnchor.constraint(equalTo: topAnchor),
      blurredBackgroundView.leftAnchor.constraint(equalTo: leftAnchor),
      blurredBackgroundView.bottomAnchor.constraint(equalTo: bottomAnchor),
      blurredBackgroundView.rightAnchor.constraint(equalTo: rightAnchor),
      ])

    addSubview(contentView, constraints: [
      contentView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.8),
      contentView.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.7),
      contentView.centerXAnchor.constraint(equalTo: centerXAnchor),
      contentView.centerYAnchor.constraint(equalTo: centerYAnchor),
      ])

    addSubview(buttonShare, constraints: [
      buttonShare.centerXAnchor.constraint(equalTo: centerXAnchor)
      ])

    header.addConstraint(
      header.heightAnchor.constraint(equalToConstant: Constants.headerHeight)
    )

    let innerStack = UIStackView(arrangedSubviews: ).then {
      $0.distribution = .fillEqually
      $0.axis = .vertical
      $0.spacing = 10
    }

    let stackView = UIStackView(arrangedSubviews: ).then {
      $0.axis = .vertical
      $0.distribution = .fill
      $0.spacing = 10
    }

    contentView.addSubview(stackView, constraints: [
      stackView.topAnchor.constraint(equalTo: contentView.layoutMarginsGuide.topAnchor),
      stackView.leftAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leftAnchor),
      stackView.bottomAnchor.constraint(equalTo: contentView.layoutMarginsGuide.bottomAnchor),
      stackView.rightAnchor.constraint(equalTo: contentView.layoutMarginsGuide.rightAnchor),
      ])
    dropPreviewImageView.addSubview(spinner, constraints: [
      spinner.centerXAnchor.constraint(equalTo: dropPreviewImageView.centerXAnchor),
      spinner.centerYAnchor.constraint(equalTo: dropPreviewImageView.centerYAnchor),
      ])
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>试试:</p>

<pre><code>    addSubview(buttonShare, constraints: [
      buttonShare.centerXAnchor.constraint(equalTo: centerXAnchor)
      buttonShare.heightAnchor.constraint(equalToConstant: 50).isActive = true
      buttonShare.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 12).isActive = true
      ])
</code></pre>

<p><strong>编辑:</strong>您需要将绿色 View 上方的 View 底部锚定到按钮顶部。确保这是在上面的代码之后</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 以编程方式约束,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/50525246/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/50525246/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 以编程方式约束