Storyboard Constraints 设置 UIImageView 不超过屏幕的 50%

Posted

技术标签:

【中文标题】Storyboard Constraints 设置 UIImageView 不超过屏幕的 50%【英文标题】:Storyboard Constraints set UIImageView no more than 50% of screen 【发布时间】:2020-04-04 19:45:46 【问题描述】:

我在UIView 中有一个UIImageView,我添加了4 个约束:

1) Top equal to top of the screen
2) center equal to center of screen
3) width equal to screen width 
4) aspect ratio of 1:1

问题是在iPhone 11 Pro Max 上看起来不错,但是当我更改为较小的分辨率时,UIImageView 几乎覆盖了整个屏幕,是否可以定义 UIImageView 不会超过屏幕的 50%?

编辑


结果如下:

【问题讨论】:

在情节提要中选择图像视图,而不是在右侧面板上选择内容模式:方面适合 【参考方案1】:

您能做的最好的事情是确保 imageView 在高度方面不超过封闭视图的 50%。但是你不能保证水平边缘会被固定到前锚和尾锚。

试试这样的方法,看看它是否适合你:

override func viewDidLoad() 
    super.viewDidLoad()

    let imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.backgroundColor = .red

    view.addSubview(imageView)

    let dimension = min(view.frame.width, view.frame.height / 2)
    imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    imageView.widthAnchor.constraint(equalToConstant: dimension).isActive = true
    imageView.heightAnchor.constraint(equalToConstant: dimension).isActive = true

【讨论】:

【参考方案2】:

添加“高度等于屏幕高度”约束。单击约束,然后更改 Multiplier = 0.5 。这将确保在任何设备上 imageView 的高度都等于根视图的一半。

【讨论】:

【参考方案3】:

将 500 优先级设置为等于宽度约束,而不是使用 0.5 乘数对高度添加小于或等于约束

现在它适合屏幕较小的情况

【讨论】:

我试过了,但我得到了很大的 UIImageview,正如你在我的帖子编辑中看到的那样 将 750 优先级设置为高度。见图片

以上是关于Storyboard Constraints 设置 UIImageView 不超过屏幕的 50%的主要内容,如果未能解决你的问题,请参考以下文章

将自动布局(约束)从 xib/storyboard 转换为代码? [关闭]

从 Storyboard iOS 导出或打印自动布局约束

设置 UINavigationItem 的 titleView:setFrame vs. Auto Layout Constraints

以编程方式为水平居中的元素提供偏移量

odoo 开发入门教程系列-约束(Constraints)

为啥 UI Design Builder 中的“Infer Constraints”将某些视图的布局高度和宽度设置为 0dp?