2017-01-10 22 views
1

プログラムでUIScrollViewを実装しようとしています。Swift: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) 

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) 

} 
} 

**注:

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

関連する問題