当我将它们添加到UIKitView时,为什么我的对象会被放置并且尺寸如此完美?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我将它们添加到UIKitView时,为什么我的对象会被放置并且尺寸如此完美?相关的知识,希望对你有一定的参考价值。
所以我将以下UIKit元素添加到我的UIViewController中以控制出现的模拟。我预计必须编写大量的放置代码,但是所有设备看起来完全没有任何设备...我的问题是为什么?
let menuButton = UIButton()
let statusLabel = UILabel()
let segmentedLabel = UISegmentedControl(items: ["None", "Glow", "Cloud"])
func initializeUI() {
//The menu button that opens up the options for the simulations
menuButton.layer.borderColor = UIColor.lightGray.cgColor
menuButton.layer.borderWidth = 1
menuButton.layer.cornerRadius = 5
menuButton.layer.backgroundColor = UIColor.darkGray.cgColor
menuButton.showsTouchWhenHighlighted = true
menuButton.imageView?.contentMode = UIViewContentMode.scaleAspectFit
menuButton.setImage(UIImage(named: "hamburger.png"), for: UIControlState.normal)
menuButton.addTarget(self, action: #selector(menuPress), for: UIControlEvents.touchDown)
view.addSubview(menuButton)
//Will display the status of the simulation
statusLabel.text = "Particle Simulation"
statusLabel.textColor = UIColor.darkGray
view.addSubview(statusLabel)
//Will display visual options
view.addSubview(segmentedLabel)
}
每个元素的大小是完美的,它们不重叠。标签位于左下角,按钮位于右下角,分段视图位于左上角(我的横向应用程序)。
我有一个额外的问题是,如果我想以编程方式开始放置这些对象,我该怎么做?这些元素没有我可以使用的属性位置,如果我做像menuButton.frame.size.height *= 20
那样不会使菜单按钮超高的东西。
这样做的原因是示例中的所有UI项都具有“内在”内容大小,因此他们可以创建自己的框架。以同样的方式添加标准UIView,你将失去运气。此外,视图使用自动调整大小掩码(也称为弹簧和支柱)基于初始帧创建自己的约束。
最后放置项目,您将直接设置框架。只是数学。祝好运。
了解内在内容大小非常重要。某些帧更改可能需要您关闭自动约束,但通常情况并非如此,但可能是您的按钮出现问题
UIView.translatesAutoresizingMaskIntoConstraints = false
以上是关于当我将它们添加到UIKitView时,为什么我的对象会被放置并且尺寸如此完美?的主要内容,如果未能解决你的问题,请参考以下文章
当我将 ImageView 添加到 CardView 或 Fragment 时,为啥我的应用程序会崩溃?
当我将新闻添加到我的 Firebase 时,有啥方法可以自动发送推送通知
为啥当我将查询字符串添加到我的 url 时,它会被 xampp 拒绝(“在此服务器上找不到请求的 URL”)