ios - 在堆栈 View 中调整 UIView 的大小

标签 ios iphone swift uiview window-resize

我需要帮助来完成这个:

  1. 这是一组 3 张照片。第一张照片是点击前的按钮屏幕,第二张照片是点击后的屏幕,第三张照片是我在 IB 中使用 stackview 设计的方式 screenshot

我一直在尝试创建这个,这是我到目前为止得到的结果。由于这个原因,我仍然没有创建任何东西,如 点击按钮后 图像所示:

  1. 我现在的结果

    Screenshot

当我按下按钮时,您可以在 gif 中看到,UIView height constraint.constant 设置为更高的值,并且 UIView 变得更高。我只想要剥离的背景也变得更高。

这是 View 在 IB 中的处理方式。

最后,这是我编码的方式


    class LetterScreenViewController: UIViewController, ResizeWordViewDelegate {
    
    @IBOutlet weak var youTubeView: YouTubeView!
    @IBOutlet weak var phonemeView: PhonemeView!
    @IBOutlet weak var wordView: WordView!
    
    var letterPresenter: LetterPresenter?
    
    @IBOutlet weak var heightWordViewConstraint: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        delegateWordObj()
        if let presenter = letterPresenter {
            presenter.setupView()
        }
    }
    
    @IBAction func dismissLetter(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }
    func delegateWordObj() {
        wordView.resizeWordViewDelegate = self
    }
    func didPressButton() {
        if heightWordViewConstraint.constant <= 0 {
            heightWordViewConstraint.constant = 30
        }else{
            heightWordViewConstraint.constant = 0
        }
    }
}

import UIKit
protocol ResizeWordViewDelegate {
    func didPressButton()
}
class WordView: UIView {
    
    @IBOutlet weak var backgroundListras: UIImageView!
    @IBOutlet var WordView: UIView!
    
    @IBOutlet weak var showWordButton: UIButton!
    
    var resizeWordViewDelegate: ResizeWordViewDelegate!
        
    override init(frame: CGRect) {
        super.init(frame: frame)
        xibInit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        xibInit()
    }
    
    
    func xibInit() {
        Bundle.main.loadNibNamed("WordView", owner: self, options: nil)
        addSubview(WordView)
        WordView.frame = self.bounds
        WordView.round(corners: [.topLeft,.topRight], radius: 120)
        WordView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    }
    
    @IBAction func showWordButtonAction(_ sender: Any) {
        resizeWordViewDelegate.didPressButton()
        self.frame.size = CGSize(width: 375, height: 200)
        self.backgroundListras.frame.size = CGSize(width: 375, height: 200)
    }

}

我想知道一种调整此 UIView 及其中所有内容的大小的方法。在找到增加高度的解决方案后,我将能够在按下按钮时显示所有其他组件。

最佳答案

我相信您的目标是创建这样的东西:

enter image description here

我所要做的就是以编程方式更改约束的高度

检查下面项目中的解决方案:

https://gitlab.com/DanielLimaDF/ResizeTest.git

重要:提防 addSubview,如果约束是在调用 addSubview 之前创建的,它可以从 View 中删除约束

关于ios - 在堆栈 View 中调整 UIView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268794/

相关文章:

ios - Stack View 受限于边距,没有边距

iphone - iPad 应用程序因不支持方向而被拒绝。如何解决问题?

iphone - 导航栏标题字体大小

swift - 在 uitableviewcell swift 中按下返回键

xcode - 将信息从 Parse 传递到 TableviewController

iOS 设备未显示 iOS 8.2 和 Xcode 6.2

ios - InAppSettingsKit 可以做到这一点,还是有另一个库?

ios - 带有KVO的iOS核心数据-valueForKey:NSManagedObject子类上的自定义属性?

iphone - [GADSlot状态] : unrecognized selector sent to instance

ios - 如何更改动态创建的标签的属性