【发布时间】:2016-04-11 21:38:09
【问题描述】:
我有一个UIScrollView,它有一个UIStackView,里面有三个对象(标签、图像和标签)
如何让滚动视图与堆栈视图一起使用?
正如您在代码中看到的,我将 Label11、image1 和 label12 添加到堆栈中 但我希望在滚动到 label21、image2 和 label22 时更改堆栈项,但我不知道怎么做!
我该怎么做?这是我尝试过的:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// parent scroll
let ScrollView = UIScrollView()
ScrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, 667)
ScrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, 667)
ScrollView.backgroundColor = UIColor.init(colorLiteralRed: 219, green: 237, blue: 254, alpha: 1)
ScrollView.pagingEnabled = true
//label1
let label11 = UILabel()
label11.text = "label1"
// image1
let image1 = UIImageView()
image1.frame = CGRectMake(self.view.frame.size.width * 1, 0, self.view.frame.size.width, 200)
image1.image = UIImage(named: "mother1")
//label2
let label12 = UILabel()
label12.text = "label2"
//label21
let label21 = UILabel()
label21.text = "label1"
// image2
let image = UIImageView()
image.frame = CGRectMake(self.view.frame.size.width * 1, 0, self.view.frame.size.width, 200)
image.image = UIImage(named: "mother1")
//label22
let label22 = UILabel()
label22.text = "label2"
//Stackview
let stackView = UIStackView(arrangedSubviews: [label11, image1, label12])
stackView.distribution = .FillEqually
stackView.axis = .Vertical
stackView.alignment = .Fill
stackView.spacing = 0
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.backgroundColor = UIColor.blueColor()
ScrollView.addSubview(stackView)
let margins = ScrollView.layoutMarginsGuide
stackView.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor, constant: 0).active = true
stackView.trailingAnchor.constraintEqualToAnchor(margins.trailingAnchor, constant: 0).active = true
stackView.topAnchor.constraintEqualToAnchor(margins.topAnchor, constant: 0).active = true
stackView.bottomAnchor.constraintEqualToAnchor(margins.bottomAnchor, constant: 0).active = true
stackView.widthAnchor.constraintEqualToAnchor(ScrollView.widthAnchor, constant: 0).active = true
stackView.heightAnchor.constraintEqualToAnchor(ScrollView.heightAnchor, constant: 0).active = true
self.view.addSubview(ScrollView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】:
-
您需要解释更多您想要发生的事情以及这与您现在的情况有何不同。 “滚动到 label21、image2 和 label22 时堆栈项应该改变”不清楚。
-
你是对的。我通过添加我不知道的部分来澄清。谢谢!
-
我遇到了同样的问题。我对动态地做这件事感到沮丧,我也喜欢这种方式。希望有人解释这个 uistackview 业务。
标签: ios swift uiscrollview uistackview