【发布时间】:2022-01-17 23:28:41
【问题描述】:
在下面的快速代码中,我尝试使用继承。当我去上课时,初始视图控制器上的约束仍在应用中。即使在中产阶级中我尝试将新的约束附加到右键,它们也没有被应用。您可以在下面的照片中看到问题所在。
import UIKit
class ViewController: UIViewController {
var right = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
[right].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
$0.backgroundColor = UIColor(
red: .random(in: 0.0...1),
green: .random(in: 0.9...1),
blue: .random(in: 0.7...1),
alpha: 1
)
}
NSLayoutConstraint.activate([
right.bottomAnchor.constraint(equalTo: view.bottomAnchor),
right.leadingAnchor.constraint(equalTo: view.leadingAnchor),
right.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.1),
right.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 1),
])
right.setTitle(">", for: .normal)
right.addTarget(self, action: #selector(nexte), for: .touchDown)
}
@objc func nexte(){
let vc = middle()
vc.modalPresentationStyle = .overCurrentContext // actually .fullScreen would be better
self.present(vc, animated: true)
}
}
class middle : ViewController{
var leftbtn = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
[leftbtn].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
$0.backgroundColor = UIColor(
red: .random(in: 0.0...1),
green: .random(in: 0.9...1),
blue: .random(in: 0.7...1),
alpha: 1
)
}
NSLayoutConstraint.activate([
leftbtn.bottomAnchor.constraint(equalTo: view.bottomAnchor),
leftbtn.leadingAnchor.constraint(equalTo: view.leadingAnchor),
leftbtn.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.1),
leftbtn.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.5 ),
right.bottomAnchor.constraint(equalTo: view.bottomAnchor),
right.leadingAnchor.constraint(equalTo: leftbtn.trailingAnchor),
right.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.1),
right.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.5 ),
])
}
}
【问题讨论】:
-
我认为你需要多态性
标签: swift inheritance constraints viewdidload