>**这是我以编程方式制作的 ui 的代码,但我无法使其能够滚动**
这是我的代码,我已经尝试了许多以编程方式添加滚动视图的方法,但没有成功,请帮助
var cityname_EN: String?
var cityname_DE: String?
var country: String?
var text_EN: String?
var text_DE: String?
var scrollView: UIScrollView!
var imageView: UIImageView!
let labelOne: UILabel = {
let label = UILabel()
label.text = "Scroll Top"
label.backgroundColor = .red
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
let labelTwo: UILabel = {
let label = UILabel()
label.text = "Scroll Bottom"
label.backgroundColor = .green
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
let allImageView: UIImageView = {
let imageView = UIImageView(image: #imageLiteral(resourceName: "all"))
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFit
return imageView
}()
let citynameELable:UILabel = {
let citynameELable = UILabel()
citynameELable.textColor = UIColor.darkText
citynameELable.textAlignment = .center
citynameELable.font = UIFont.boldSystemFont(ofSize: 18)
citynameELable.translatesAutoresizingMaskIntoConstraints = false
return citynameELable
}()
let countryLable:UILabel = {
let countryLable = UILabel()
countryLable.textColor = UIColor.darkText
countryLable.textAlignment = .center
countryLable.font = UIFont.boldSystemFont(ofSize: 18)
countryLable.translatesAutoresizingMaskIntoConstraints = false
return countryLable
}()
let textELable: UITextView = {
let textELable = UITextView()
textELable.translatesAutoresizingMaskIntoConstraints = false
textELable.textAlignment = .center
textELable.font = UIFont.boldSystemFont(ofSize: 12)
textELable.isEditable = false
textELable.isScrollEnabled = false
return textELable
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
setupNavigation()
setupLayout()
}
func setupNavigation(){
navigationItem.title = "Map View"
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.hidesSearchBarWhenScrolling = false
navigationController?.navigationBar.largeTitleTextAttributes =
[NSAttributedStringKey.foregroundColor: UIColor.gray,
NSAttributedStringKey.font: UIFont(name: "Arial", size: 30) ??
UIFont.systemFont(ofSize: 30)]
}
private func setupLayout()
{
view.addSubview(countryLable)
view.addSubview(citynameELable)
view.addSubview(textELable)
citynameELable.text = cityname_EN
countryLable.text = country
textELable.text = text_EN
let topMapBokContainerView = UIView()
topMapBokContainerView.backgroundColor = UIColor.red
topMapBokContainerView.translatesAutoresizingMaskIntoConstraints = false
let mySegmentedControl = UISegmentedControl (items: ["English","DE"])
mySegmentedControl.translatesAutoresizingMaskIntoConstraints = false
mySegmentedControl.accessibilityActivate()
mySegmentedControl.isEnabledForSegment(at: 0)
mySegmentedControl.selectedSegmentIndex = 0
// Add function to handle Value Changed events
mySegmentedControl.addTarget(self, action: #selector(self.segmentedValueChanged(_:)), for: .valueChanged)
let bottomControlsStackView = UIStackView(arrangedSubviews: [citynameELable,countryLable])
bottomControlsStackView.backgroundColor = UIColor.blue
bottomControlsStackView.translatesAutoresizingMaskIntoConstraints = false
bottomControlsStackView.distribution = .fillEqually
view.addSubview(topMapBokContainerView)
topMapBokContainerView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
topMapBokContainerView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
topMapBokContainerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
topMapBokContainerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true
topMapBokContainerView.addSubview(allImageView)
allImageView.centerXAnchor.constraint(equalTo: topMapBokContainerView.centerXAnchor).isActive = true
allImageView.centerYAnchor.constraint(equalTo: topMapBokContainerView.centerYAnchor).isActive = true
allImageView.heightAnchor.constraint(equalTo: topMapBokContainerView.heightAnchor, multiplier: 0.5).isActive = true
self.view.addSubview(mySegmentedControl)
NSLayoutConstraint.activate([
mySegmentedControl.topAnchor.constraint(equalTo: topMapBokContainerView.safeAreaLayoutGuide.bottomAnchor, constant: 10 ),
mySegmentedControl.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10),
mySegmentedControl.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10),
mySegmentedControl.heightAnchor.constraint(equalToConstant: 30)
])
view.addSubview(bottomControlsStackView)
NSLayoutConstraint.activate([
bottomControlsStackView.topAnchor.constraint(equalTo: mySegmentedControl.safeAreaLayoutGuide.bottomAnchor, constant: 10 ),
bottomControlsStackView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10),
bottomControlsStackView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10),
bottomControlsStackView.heightAnchor.constraint(equalToConstant: 50)
])
view.addSubview(textELable)
textELable.topAnchor.constraint(equalTo: bottomControlsStackView.safeAreaLayoutGuide.bottomAnchor).isActive = true
textELable.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
textELable.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
textELable.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
}
@objc func segmentedValueChanged(_ sender:UISegmentedControl!)
{
if sender.selectedSegmentIndex == 0 {
citynameELable.text = cityname_EN
textELable.text = text_EN
}
else if sender.selectedSegmentIndex == 1 {
citynameELable.text = cityname_DE
textELable.text = text_DE
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我创建的所有视图都试图添加到滚动视图中,例如view.addSubView(MyViews Here)
这是我的应用的屏幕截图
- 设置约束顶部、底部、前导和尾随以引用超级视图的滚动视图
- Super View add Scroll View (view.addSubview(scrollView)) 创建内容视图
- 并设置约束 内容视图的顶部、底部、前行和尾随 引用滚动视图
- 将内容视图添加到 ScrollView (scrollView.addSubview(contentView))
- 在内容视图中设置元素
根据您的问题,您的视图层次结构应该是:
视图 -> 滚动视图 -> 所有您的视图
因此,您可以将滚动视图框架设置为与视图相同的视图,然后:
view.addSubView(scrollView)
scrollView.addSubView(yourViews Here)