2017-11-06 11 views
0

私にはストーリーボードを使用しない古いレガシーアプリケーションがあります。すべてがプログラムで追加および設定されます。私はUIButtonの制約をiPhone Xの画面の下に向けて調整しました。私は、ボタンがタッチイベントに反応しなくなり、ビューの背景色を黄色に設定すると、ボタンがビューの範囲外にあることに気づきましたそれはに属します。
私は画面を埋めるためにビューを拡張するためにいくつかのことを試みましたが、何も動作していないようです。ビューの高さを設定し、内容モードをAspect FillおよびScaleに設定して、運がない状態で塗りつぶします。iPhone用にUIViewの高さが拡張されていません

[self.view setBackgroundColor:[UIColor yellowColor]]; 
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 

私は、ビューのフレームをメイン画面の境界に設定しようとしました。それはうまくいかなかった。

CGRect frame = [[UIScreen mainScreen] bounds]; 
self.view.frame = frame; 

メインビューの高さの制約を設定しようとしましたが機能しませんでした。私はこれを正しく行ったかどうかはわかりません。

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view 
                   attribute:NSLayoutAttributeHeight 
                   relatedBy:NSLayoutRelationEqual 
                   toItem:nil 
                   attribute:NSLayoutAttributeNotAnAttribute 
                  multiplier:1 
                   constant:812]]; 

誰でも私が間違っていることを教えてもらえますか?あなたがNSLayoutAttributeNotAnAttributeを変更する必要が812.0

UIView not full screen

+0

私はそれが安全な領域と関係があると思われます。また、ストーリーボードでアプリケーションをやり直すこともできます。 – GeneCode

+1

安全領域に関して制約を設定しようとしましたか? –

+1

あなたのビューはフレームを取得していないようです。 viewDidAppearでビューのフレームを設定し、didLayoutSubviewsの制約を変更します。 – Sunny

答えて

1

これらのチェックに

  1. を行いますと、自動的に画面全体を取る必要がありますrootViewControllerのフレームセットです[[UIScreen mainScreen] bounds]としてdidFinishLaunchingWithOptionsAppDelegate?このようなもの

    self.window.rootViewController.view.frame = [[UIScreen mainScreen] bounds];

  2. UIWindowのフレームがmainScreen境界に設定されているかどうかを確認してください。

    self.window.frame = [[UIScreen mainScreen] bounds]

  3. チェック任意の自動レイアウトの制約がスタートボタンがのViewControllerのメインビューのサブビューであればブレークポイント

  4. チェックを制約エラーを有効にすることで、壊れている場合。
+0

設定self.window.frame = [[UIScreen mainScreen] bounds];問題を修正しました – ijason03

1

toItem:nil例えばそれはsuperviewだ...あなたはそれを制約するビューでなければなりません....このviewConstraintセットこのビューの高さself.view.superviewまたは何viewからNSLayoutAttributeHeighttoItemにあなたが...それをバインドし、変更したい8120.0

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.view.superview 
                  attribute:NSLayoutAttributeHeight 
                 multiplier:1.0 
                  constant:0.0]]; 

self.viewviewControllersviewですか?あなたはどのような方法でそのframeを設定する必要はありません... viewControllerが含まれていない限り、それはbounds

+0

でプロジェクト全体をやり直すのに同意します。はいself.viewはビューコントローラビューです。私は前にフレームを設定する必要はなかった。これは、iPhone Xシミュレータでテストを開始したときに開始されました。私はあなたの提案を今日後で試してみます – ijason03

+0

vc.viewにフルスクリーンを表示させない別の問題があると思います – Magoo

+0

私はあなたの制約の提案を試みましたが、うまくいかなかった。奇妙なことは、self.view.superview.frameをチェックすると、x = 0、y = 0、width = 0、height = 0に設定されます。 self.viewのフレームは、x = 0、y = 0、width = 375、height = 812に設定されていますが、上の画像のようにまだ上に表示されています – ijason03

関連する問題