2016-04-16 16 views
0

誰かが私の問題を助けてくれますか?Xcode 7 Swift 2実行時にオブジェクトサイズが異なる

私はViewcontrollerを持っています。私は "View"オブジェクトを追加し、 "View"オブジェクトの幅を実行時とデザインサイズで現在320(iPhone 4s)に表示されている画面幅に設定しました。しかし、実行時に "View"オブジェクトの幅をチェックすると、私には240が表示されます。デザインモードの "View"オブジェクトのwidthプロパティは私に320を表示しています。 "View"オブジェクトを画面に自動的に調整したい幅は使用するiPhoneに依存します。たとえば、iPhone 6でこれをシミュレートすると、画面の幅は375ですが、「表示」にはまだ240が表示されます。同じ高さが表示されます。

高さも同様です。デザインモードでは、高さは私には284が表示されますが、実行時には私には128が表示されます。

「ビュー」オブジェクトの中に80 x 80のサイズのボタンがありますが、ここでは46のx 30

は私の "表示" の設定です:

View Object Height Constraints

View Object Vertical Constraints

"ビュー" の幅を取得するための私のコードは以下の通りです:

ボタンについては210
@IBOutlet weak var gameSpace: UIView! 
    var gsWidth: CGFloat = 0 
    var gsHeight: CGFloat = 0 

    let gsSize: CGRect = gameSpace.bounds 
    gsWidth = gsSize.width 
    gsHeight = gsSize.height 

...

@IBOutlet weak var tapBtn: UIButton! 
    let buttonSize: CGRect = tapBtn.bounds 
    tapBtnWidth = buttonSize.width 
    tapBtnHeight = buttonSize.height 

あなたの助け/提案が高く評価されます。前もって感謝します。

+0

ビューの幅に関連する制約は何ですか? – slxl

+0

ビューの幅は320ですか?等しい幅の制約:定数0、優先度1000、乗数1 – Coolboylp

答えて

1

実際には、自動レイアウトがジョブを作成してから間違った値を使用する前に、ディメンション関連のプロパティを割り当てることがあります。

あなたは、自動レイアウトに依存していくつかの値に更新する必要がある場合 - ここでそれを行うために、その優れたを:

override func viewDidLayoutSubviews() { 
     // Update your values there 
} 

自動レイアウトエンジンの仕上げすべての彼の仕事を。また、この関数はビューのライフサイクル中に複数回呼び出される可能性があります。

+0

この関数はどこにありますか? Xcodeにはごめんなさい。 – Coolboylp

+0

@Coolboylpこれをビューコントローラに追加する必要があります。「ビューはレイアウトのサブビューを表示しました」の直後に自動的に呼び出されます – slxl

+0

ありがとうございます。私はそれを試してみましょう。 – Coolboylp

関連する問題