簡體   English   中英

ScrollView在Swift 3中添加SubView

[英]ScrollView Add SubView in swift 3

我想嘗試在滾動視圖上添加視圖表單,但是視圖沒有完全添加到滾動視圖的框架上,我的代碼是:

import UIKit

class AddIncomeVC: UIViewController {
    @IBOutlet var scrollView: UIScrollView!
    @IBOutlet var views: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = views.frame.size
        scrollView.addSubview(views)

    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        views.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollView.frame.size.height)
    }

}

在此處輸入圖片說明

謝謝,

編輯行

views.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollView.frame.size.height)

views.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height)

我用以下代碼解決了我的問題:

import UIKit

class AddIncomeVC: UIViewController {
    @IBOutlet var scrollView: UIScrollView!
    @IBOutlet var views: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = views.frame.size
        scrollView.addSubview(views)


    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        views.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)

    }

}

感謝所有為我的問題提供寶貴的時間。 在此處輸入圖片說明

問題是:在加載視圖時,您的約束不會更新為新的顯示尺寸。 我相信您的問題之所以出現,是因為您正在使用大小與情節提要不同的模擬器來運行應用程序……更大的大小(例如,使用iPhone SE的情節提要並在iphone 6模擬器上運行)。

在“查看並加載”時,您的視圖已經存在,它是正確的...但是其約束仍然具有iPhone SE大小。

因此,在加載視圖時,您要設置的內容大小(iphone6屏幕大小需要)等於情節提要視圖大小(仍是iphone SE屏幕大小)。

您的解決方案效果很好。 在iOS布局所有子視圖之后,約束將更新為新的屏幕尺寸,並保持其比例。 在viewDidLayoutSubviews處,“視圖”已經具有正確的約束值...因此,該視圖具有iphone6的屏幕尺寸,您可以將框架設置為正確

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM