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 转换为代码? [关闭]
设置 UINavigationItem 的 titleView:setFrame vs. Auto Layout Constraints
为啥 UI Design Builder 中的“Infer Constraints”将某些视图的布局高度和宽度设置为 0dp?