[英]Swift - Add UIImageView as subview of UIWebView scrollView and scaling
[英]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.