2017-01-10 3 views
1

Я пытаюсь реализовать программный код UIScrollView.Swift: добавление представления UIScroll Programmatically не прокручивается в поле зрения

Главной причиной этого является то, что я впервые добавил представления в своем 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

UIScrollView может прокручивать, если 'contentSize' больше его размера кадра. Поэтому вам просто нужно установить 'contentSize' с высотой, превышающей высоту кадра прокрутки (в случае вертикальной прокрутки). – nynohu

+0

oh спасибо. Я не знал об этом .. :) :) – Sam

+0

ok Я установил размер контента больше высоты. но только свитки прокрутки прокрутки без прокрутки зрения? – 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

он работает ?. Потому что в раскадровке эти взгляды добавляются в self.view, а не в scrollview. –

+0

Я пытаюсь реализовать, это занимает время – Sam

1

В зависимости от типа прокрутки вы хотите, вы должны установить contentSize из scrollView. Например

горизонтальной прокрутки:

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, set 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

Смежные вопросы