我的功能滚动条中的图像奇怪地显示在较小的手机中,例如iPhone 5s
,iPhone 6
等。
编辑:我正在使用UIScrollView
进行此操作。 :)
我尝试将代码添加到viewDidLayoutSubviews
和viewWillLayoutSubviews
中,但似乎无法正常工作。
// 1第一次尝试
override func viewDidLayoutSubviews() {
featureScroll.contentSize = CGSize(width: self.view.bounds.width * CGFloat(featureArray.count), height: 300)
}
// 2次尝试
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()()
featureScroll.contentSize = CGSize(width: self.view.bounds.width * CGFloat(featureArray.count), height: 300)
}
编辑: //我如何将图像加载到featureScroll
let feature1 = ["image": "ic_home1"]
let feature2 = ["image": "ic_home2"]
let feature3 = ["image": "ic_home3"]
var featureArray = [Dictionary<String, String>](
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
featureArray = [feature1, feature2, feature3]
featureScroll.isPagingEnabled = true
featureScroll.contentSize = CGSize(width: self.view.bounds.width * CGFloat(featureArray.count), height: 300)
featureScroll.showsHorizontalScrollIndicator = false
featureScroll.delegate = self
loadFeatures()
}
func loadFeatures(){
for (index, feature) in featureArray.enumerated() {
if let featureView = Bundle.main.loadNibNamed("Feature", owner: self, options: nil)?.first as? FeatureView {
featureView.featureImage.image = UIImage(named: feature["image"]!)
featureScroll.addSubview(featureView)
featureView.frame.size.width = featureScroll.bounds.size.width
featureView.frame.origin.x = CGFloat(index) * featureScroll.bounds.size.width
}
}
}
func scrollViewDidScroll(_ featureScroll: UIScrollView) {
let page = featureScroll.contentOffset.x / featureScroll.frame.size.width
featurePageControl.currentPage = Int(page)
}
下面的链接显示了实际结果,我想摆脱空白,应该怎么做?
-> https://imgur.com/8AUZh4U.png
预先感谢您的帮助! :)
答案 0 :(得分:0)
scrollView需要知道它的位置(其框架=位置和大小)以及其内容的大小(将滚动)。
垂直stackView需要知道其位置(x,y)和其宽度。它的高度取决于其内容和设置(例如项目之间的间距)。
因此,根据需要,您可以在整个屏幕上都有一个scrollView并在其中包含一堆垂直视图,您可以执行以下操作 (仅在有约束的情况下,不能以编程方式进行设置) :
0到其超级视图的顶部,顶部,底部,底部约束
0处对ViewController视图的前导,尾随约束。顶部,前导,尾随,底部= 0到其父视图(scrollView)>当stackView的内容大于scrollView的高度时,这将使ScrollView ...滚动
在您的情况下,我认为它是一堆imageViews。每个项目都需要设置自己的高度。
ImageView高度的总和(以及stackView中设置的间距)将确定stackView的高度,而其中的高度将确定scrollView的内容高度(从而确定可滚动的高度)。
有关UIScrollView see the documentation here
的更多信息有关更多信息,UIStackView see the documentation here