私はUIViewControllerに表示されるシミュレーションを制御するために、次のUIKit要素を追加しています。私は多くの配置コードを書く必要があると思っていましたが、代わりにすべてのデバイスは完全には何も表示されません...私の質問はなぜですか?UIKitViewにオブジェクトを追加すると、オブジェクトの配置とサイズが完全になるのはなぜですか?
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
のような何かをすれば、メニューボタンを超高にしません。
それがUIKitの振る舞いであることを示します。私が見ていないこの効果を生むコードが書かれています。 –