2017-07-21 4 views
2

スクロールビューの幅を画面の幅に設定できません。誰かが私が間違っているところを案内してくれますか?ここでスクロールの幅を設定できません。スクロールを表示します。

enter image description here

あなたのUIをロードし、私は以下の機能が別のビューに

public func pinView(_ view: UIView, to scrollView: UIScrollView) { 
     view.translatesAutoresizingMaskIntoConstraints = false 
     view.pin(to: scrollView) 
    } 

    public func pin(to view: UIView) { 
     NSLayoutConstraint.activate([ 
      leadingAnchor.constraint(equalTo: view.leadingAnchor), 
      trailingAnchor.constraint(equalTo: view.trailingAnchor), 
      topAnchor.constraint(equalTo: view.topAnchor), 
      bottomAnchor.constraint(equalTo: view.bottomAnchor) 
      ]) 
    } 
+0

、プログラムの追加:

scrollViewの幅に等しいcontentViewの幅を設定し、制約を追加しますか? –

+0

うん、プログラムで 'scrollView'を追加してください。 – kurrodu

答えて

0

viewDidLoadを1つのビューを固定するために使用されている//

// SCROLL VIEW 
var scrollView = UIScrollView() 
var contentView = UIView() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    screenHeight = screenSize.height 
    screenWidth  = screenSize.width 

    // SCROLL VIEW 
    scrollView = UIScrollView(frame: view.bounds) 

    // Here I am adding all my labels and textview fields to content view 
    contentView.addSubview(problemDescriptionStackView) 
    .... 

    // Adding content view to the scrollView 
    scrollView.addSubview(contentView) 

    // Pinning the contentView to the scroll view 
    pinView(contentView, to: scrollView) 

    self.view.addSubview(scrollView) 

    // Here I am Setting the constraints for all the items in the contentView 
    .... 
} 

スクロールビューを有効にしている方法ですstoryboardまたはnib。サイズはInterface Builderで選択した内容によって異なります。

viewWillAppearにuiを初期化し、変数isInitializedを追加することができます。

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    if !isInitialized { 
     isInitialized = true 
     // do your stuff 
    } 
} 
0

Scroll.contentSize = CGSize(幅:self.view.frame.size.width、高さ:self.view.frame.size.height)

0

自動レイアウト制約を使用して(一方のサブビュー水平中心を作ります)インタフェースビルダでまたはプログラムによってscrollviewに

0

あなたはこの修正できる方法がいくつかありますので、[OK]を:ストーリーボードに

1.-はあなたのビューに移動し、左を保持するつもりですスクロール・ビューをクリックし、メイン・ビュー上でそれを放すと、equaをクリックしますビュー内のL幅

2.-は、ここでは、負荷が

self.scrollViewName.frame.size.width = self.view.frame.width 
0

あなたはscrollViewにcontentInsetを設定することができ、そしてそれはscrollView内のスクロールエリアのコンテンツのサイズを調整しますを入れていた速いですたとえば、あなたがviewDidLoadから制約を設定しているとトリック:)

0

を行う必要がありますが、ビューが適切にこの方法でレイアウトされていない

scrollView.contentInset UIEdgeInsets(top: 0, left: 0, bottom: 0, right: padding) 

。ビューのレイアウトが完了したら、制約を設定する必要があります。だから、中に制約を設定する必要があります

override func viewDidLayoutSubviews() { // set constraints here }

そして、あなたは制約がすでに追加されているかどうかを確認するために変数を使用することができます。

0

てみ次のコードは、あなたがあるため自動サイズのフレームを変更することはできませんこと、だから、それに応じて画面の正確なサイズのiPhoneを得るためviewDidAppear方法で方法を以下

override func viewDidAppear(_ animated: Bool) { 

super.viewDidAppear(animated) 

    // Set the frame of scrollview 

    self.scrollViewName.frame = CGRectMake(self.scrollViewName.frame.origin.x, 
    self.scrollViewName.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height); 

} 
+0

これを試しても動作しません。 – kurrodu

1

使用を次のコードを記述しようとするかもしれません。 この方法をお使いになると、あなたの問題は解決しました。疑問がある場合はここでコメントしてください。

//MARK: - Main Screen Width 

func getScreenWidth() -> CGFloat{ 
    return UIScreen.main.bounds.size.width 
} 

//MARK: - Main Screen Height 
func getScreenHeight() -> CGFloat{ 
    return UIScreen.main.bounds.height 
} 
0

ピンあなたのscrollViewviewへの代わりに、そのframeを設定します。

contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true 
関連する問題