按视图高度的百分比定义恒定约束

Posted

技术标签:

【中文标题】按视图高度的百分比定义恒定约束【英文标题】:define a constant constraint by a percentage of the views height 【发布时间】:2021-03-08 05:53:09 【问题描述】:

在下面的快速代码中,我试图始终将图片限制在顶部锚点下方的 10%。通过常量 来做到这一点。就像橙色框下方的图片一样,约束在顶部锚点下方 10% 处,并且它是一个常数。我尝试在它不起作用的约束中弄乱常量。

    import UIKit

    class ViewController: UIViewController 
        var drawView = UIView()
        var pic = UIImageView()


        override func viewDidLoad() 
            super.viewDidLoad()
            // Do any additional setup after loading the view.

            
            [pic,drawView].forEach
                $0.translatesAutoresizingMaskIntoConstraints = false
                view.addSubview($0)
            
            NSLayoutConstraint.activate([
     //here is the constant
                pic.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor,constant,),
                pic.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                pic.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.25),
                pic.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.8),
                
                drawView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
                drawView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                drawView.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.3),
                drawView.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.9),
                
              
                

                
                
            ])
            view.bringSubviewToFront(pic)
            drawView.backgroundColor = .blue
            pic.backgroundColor = .purple
         
        


        

    

【问题讨论】:

【参考方案1】:

您需要一个高度为父视图高度的 1/10 的不可见视图,通过它的乘数来充当分隔符。现在只需将其底部设置为可见视图的顶部即可。

【讨论】:

以上是关于按视图高度的百分比定义恒定约束的主要内容,如果未能解决你的问题,请参考以下文章

为约束布局内的布局设置最小百分比高度

按比例约束 UIView

滚动视图内的约束布局,总是参考线高度变化

以百分比指定两个 UIView 的约束

如何使用百分比设置约束?

如何使用两个不同的乘数更改单个高度约束的乘数