2017-01-10 146 views
1

我試圖以編程方式實現UIScrollViewSwift:添加UIScroll視圖以編程方式不滾動視圖

背後的主要原因是我第一次在我的ViewController添加了意見,最後我發現我忘了在我的ViewController中添加滾動視圖。現在我想添加它programiticaly,但不會在視圖中添加。我到處搜索並嘗試,但沒有幫助。

@IBOutlet weak var UIViewHeader: UIView! 
@IBOutlet weak var btnRegisteredCourses: UIButton! 
@IBOutlet weak var lblName: UILabel! 
@IBOutlet weak var tableView: UITableView! 

var scrollView: UIScrollView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    scrollView = UIScrollView(frame: view.bounds) 
    scrollView.contentSize = view.bounds.size 
    scrollView.scrollEnabled = true 
    scrollView.addSubview(UIViewHeader) 
    scrollView.addSubview(lblName) 
    scrollView.addSubview(tableView) 
    scrollView.addSubview(btnRegisteredCourses) 
    view.addSubview(scrollView) 
    } 
+0

如果'contentSize'大於其幀大小,則UIScrollView可以滾動。所以你只需要設置'contentSize'的高度大於滾動的框架高度(在垂直滾動的情況下)。 – nynohu

+0

哦謝謝..我不知道這個.. :) :) – Sam

+0

好吧我設置的內容尺寸更大的高度。但只有滾動條滾動而不滾動視圖? – Sam

回答

1

增加滾動視圖的內容大小,然後再試一次。

並且您必須從超級視圖中移除UIViewHeader,lblName,tableView,btnRegisteredCourses,然後添加到滾動視圖。

+0

你是指contentSize? – Sam

+0

是的,scrollView.contentSize –

+0

它已經到了視圖的大小,不是嗎? – Sam

2
override func viewDidLayoutSubviews() 
{ 
    scrollView.delegate = self 
    scrollView.contentSize = CGSize(width:self.view.frame.size.width, height: 1000) 

} 
+0

我只能找到滾動條和欄只滾動,但不滾動視圖 – Sam

1

嘗試此內容也將滾動:

@IBOutle var UIViewHeader: UIView! 
@IBOutle var btnRegisteredCourses: UIButton! 
@IBOutle var lblName: UILabel! 
@IBOutle var tableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    scrollView = UIScrollView(frame: view.bounds) 
    scrollView.contentSize = CGSize(width:self.view.frame.size.width, height: 1000) 
    scrollView.scrollEnabled = true 

UIViewHeader.removeFromSuperview() 
lblName.removeFromSuperview() 
tableView.removeFromSuperview() 
btnRegisteredCourses.removeFromSuperview() 
    scrollView.addSubview(UIViewHeader) 
    scrollView.addSubview(lblName) 
    scrollView.addSubview(tableView) 
    scrollView.addSubview(btnRegisteredCourses) 
    view.addSubview(scrollView) 
    } 
+0

你能解釋爲什麼我們要從超級視圖中刪除? – Sam

+0

它工作?因爲在故事板中,這些視圖不會在scrollview上添加到self.view中。 –

+0

我正試圖執行,它需要時間 – Sam

1

取決於哪種類型的滾動你想要的,你必須設置scrollViewcontentSize。例如

移動水平滾動條:

scrollView.contentSize = CGSize(width: UIViewHeader.frame.size.width + lblName.frame.size.width + tableView.frame.size.width + btnRegisteredCourses.frame.size.width , height: scrollView.frame.size.height) 

垂直滾動:

scrollView.contentSize = CGSize(width: scrollView.frame.size.frame.size.width , height: UIViewHeader.frame.size.height + lblName.frame.size.height + tableView.frame.size.height + btnRegisteredCourses.frame.size.height) 

這樣做:

override func viewWillAppear(_ animated: Bool) { 
     scrollView.contentSize = CGSize(width: scrollView.frame.size.frame.size.width , height: UIViewHeader.frame.size.height + lblName.frame.size.height + tableView.frame.size.height + btnRegisteredCourses.frame.size.height) 
    } 
+0

視圖不滾動 – Sam

+0

@Samjhana,設置scrollView內容大小的viewWillAppear –

+0

對不起,我沒有得到你的意思 – Sam

0
import UIKit 
class ViewController: UIViewController { 
@IBOutlet weak var UIViewHeader: UIView! 
@IBOutlet weak var btnRegisteredCourses: UIButton! 
@IBOutlet weak var lblName: UILabel! 
@IBOutlet weak var tableView: UITableView! 

var scrollView: UIScrollView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    scrollView = UIScrollView(frame: view.bounds) 
    scrollView.contentSize = CGSize.init(width: self.view.frame.width, height: 1000)  //1000 change to the scollview's size. 
    scrollView.addSubview(UIViewHeader) 
    scrollView.addSubview(lblName) 
    scrollView.addSubview(tableView) 
    scrollView.addSubview(btnRegisteredCourses) 
    view.addSubview(scrollView) 

} 
} 

**注: - 但是,上面的代碼重置所有約束**

+0

視圖不滾動 – Sam

相關問題