2017-12-16 9 views
-1

私は初めてiOSアプリケーションを作成しています。自動レイアウトとスクロール表示に問題が発生しました。だから、今私はメインのストーリーボードにスクロールビューを持っています。スクロールビューは画面全体を占有する必要があります。私は他の3つのxibファイルを持っています。それぞれがスクロールビューのページです。だから私はスクロール可能なウォークスルーのようなものを実現することができます。今私が持っている問題はそれです。メインのストーリーボードのサイズを変更すると、シミュレータから取得した結果が異なります。iOS:自動レイアウトに関する問題。シミュレータの結果がストーリーボードの変更として反映される

また、アプリが読み込まれると、すぐに画面に表示されているものは表示されません。純粋な黒い背景が表示されます。最初に画面をスクロールしてから、すべてのテキストを表示する必要があります。私は何が間違っているか分からない。私は主なストーリーボードの背景色がありません。これは上記の問題に関連していますか?


私の主なストーリーボードをiPhone Plusサイズに変更した場合の最初の問題のいくつかの例です。シミュレータには、iPhone Plusデバイスの正しいサイズが表示されますが、通常のiPhoneおよびiPhone Xでは表示されません。下の図を参照してください。

enter image description here

私は、通常のiPhoneのサイズにストーリーボードを変更した場合。 iPhone 8は正しいサイズを表示しますが、プラスとXはオフになります。

enter image description here

これは私が私のスクロールビューの制約を設定する方法です。

enter image description here

これは私がコード内の個々のXIBやスクロールビューを設定する方法です。

override func viewDidLoad() { 
    super.viewDidLoad() 

    //Set up individual view for scroll view 

    let xOrigin = self.view.frame.width 

    creditScreen = CreditScreenView(nibName: "CreditScreenView", bundle: nil) 

    mainScroll.addSubview(creditScreen.view) 

    forWeather = ForcastScreenView(nibName: "ForcastScreenView", bundle: nil) 

    mainScroll.addSubview(forWeather.view) 

    nowWeather = NowScreenView(nibName: "NowScreenView", bundle: nil) 

    mainScroll.addSubview(nowWeather.view) 

    //mainScroll.translatesAutoresizingMaskIntoConstraints = true 

    // set up the size for each view 
    creditScreen.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height) 

    forWeather.view.frame = CGRect(x: xOrigin, y: 0, width: self.view.frame.width, height: self.view.frame.height) 

    nowWeather.view.frame = CGRect(x: xOrigin * 2, y: 0, width: self.view.frame.width, height: self.view.frame.height) 

    mainScroll.contentSize = CGSize(width: CGFloat(view.frame.width * 3), height: CGFloat(view.frame.height)) 
    mainScroll.contentOffset.x = view.frame.width * 3 

    mainScroll.setContentOffset(CGPoint(x: view.frame.width * 2, y: 0), animated: true) 

    //Set up the location manager here. 
    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters 
    locationManager.requestWhenInUseAuthorization() 
    locationManager.startUpdatingLocation() 


} 

問題の原因は不明ですが、xibを設定する方法がわかりません。私がこの問題を捜したとき、トップレベルのビューとしてメインのストーリーボードにビューを配置し、そのトップレベルのビューにスクロールビューを配置するよう提案しています。それは私のために働かなかった。誰かがこの問題に助けてくれますか?ありがとう!

必要に応じてソースコード用のGitHubがあります。 https://github.com/lucky13820/air

+0

実際のコードまたはコード – Paulw11

+0

のスクリーンショットを含むように質問を編集してください。@ Paulw11スクリーンショットを実際のコードに置き換えました。コードを追加する必要がありますか?私はこれらがレイアウトに関連する唯一のコードだと思います。私はストーリーボードですべての制約を犯しました。 – lucky13820

答えて

0

でテストしている、私はそれを修正しました。

2行のコードを追加し、属性インスペクタでスクロールビューの自動サイズ変更サブビューをオフにしました。

mainScroll.contentSize = CGSize(width: CGFloat(xOrigin * 3), height: CGFloat(self.view.frame.height)) 

mainScroll.translatesAutoresizingMaskIntoConstraints = true 

ありがとうございます。

1

あなたの黒い画面の問題に答えるために、このコードを使用し

mainScroll.setContentOffset(するCGPoint(X:view.frame.width * 2、Y:0)、 はアニメーション:真)

は右の割合で右に移動すると、私はより多くの研究と多くの試行錯誤を行った後iPhone 8,8プラスとX.

+0

ありがとう、それは黒い画面の問題を解決します! – lucky13820

関連する問題