如何将内容宽度设置为设备/父宽度的大小?

问题描述 投票:-1回答:1

我的功能卷轴中的图像在较小尺寸的手机中显得奇怪,如iPhone 5siPhone 6等。

编辑:我正在使用UIScrollView来做到这一点。 :)

我已经尝试将我的代码添加到viewDidLayoutSubviewsviewWillLayoutSubviews但它似乎没有工作。

//第一次尝试

override func viewDidLayoutSubviews() {
    featureScroll.contentSize = CGSize(width: self.view.bounds.width * CGFloat(featureArray.count), height: 300)
}

//第二次尝试

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

预先感谢您的帮助! :)

ios swift uiscrollview viewdidlayoutsubviews
1个回答
0
投票

The theory

scrollView需要知道它的位置(它的框架=位置和大小)和内容的大小(将滚动)。

垂直stackView需要知道它的位置(x,y)及其宽度。其高度取决于其内容和设置(例如项目之间的间距)。


Example

因此,根据您的需要,在整个屏幕上放置一个scrollView并在其中放置一堆垂直视图可以执行类似的操作(仅限于约束,不会以编程方式设置任何内容):

enter image description here enter image description here


UIScrollView:

顶部,前导,尾随,底部约束为0到其superview

enter image description here


垂直UIStackView:

从0到ViewController视图的前导,尾随和约束。顶部,前导,尾随,底部= 0到其superview(scrollView)>这将使ScrollView ...在stackView内容大于scrollView的高度时滚动

enter image description here


StackView的项目:

在你的情况下,我认为这是一堆imageViews。每个项目都需要设置自己的高度。

enter image description here

ImageView高度的总和(以及在stackView中设置的间距)将确定stackView的高度,该高度将决定scrollView的内容高度(从而确定可滚动高度)。

有关UIScrollView see the documentation here的更多信息

有关更多信息,请访问UIStackView see the documentation here

© www.soinside.com 2019 - 2024. All rights reserved.