2017-05-30 4 views
-1

私のアプリはiPhone 4sとiPadのiPhone解像度では正常に見えないため、拒否されました。その解像度のいくつかのフィールドに重なるボタンがいくつかあります。問題は、今ではXCodeを調べたところ、iPhone以外のすべてのモデルに同じサイズのクラスがあることがわかりました。どのように私はそれらの違いを作ることができますか?これらのボタンをコードに追加します。他のフィールドはIBに追加されます。iOS - iPhoneの画面を区別する方法

EDIT:これらのボタンは絶対座標で配置され、IBに追加されたフィールドは自動レイアウトを使用します。

+0

自動レイアウトを使用していますか? –

+0

[iphone 4とiphone 5の画面サイズをプログラムで確認する方法](https://stackoverflow.com/questions/27775779/how-to-check-screen-size-of-iphone-4-and) -iphone-5-programmatically-in-swift) – shallowThought

+0

多分、私はそれがiPadsの問題を解決するかどうか分からない。 – kemkriszt

答えて

0

あなたは携帯電話

static let iPhone5sHeight: CGFloat = 568 static let iPhone4sHeight: CGFloat = 480

0

UIScreen.main.bounds.height <= HeightConstant.iPhone4sHeight

高さの値は、一般的に、私はストーリーボードを使用しません高さに基づいて異なるデバイスを区別することができます:あなたは、あなたのストーリーボードを使用しているので、この場合のPのが、形質を使うことができます。この特性により、サイズ、方向、またはデバイスを使用して、同じコントローラの複数のデザインを設計できます。

http://www.techotopia.com/index.php/Using_Trait_Variations_to_Design_Adaptive_iOS_User_Interfaces

これは、任意のコードのないクリーンなソリューションです。

0

私は少し遅れていますが、私は前に正確な問題に直面しました。しかし、

ステップ1:

は、デザインの基本画面を取ります。私はiphone 7 plusを選びます。

ステップ2:

は、いくつかの定数を定義します。

なぜ?

これにautolayout制約の定数を掛ける必要があります。

なぜ自動レイアウトですか?

あなたはすべてのデバイスにアプリケーションを適合させたい場合は、あなたは 自動レイアウトサイズクラスを使用する必要があります。

私はあなたに私の定数を与えています:

var SCREEN_WIDTH = UIScreen.main.bounds.size.width 
var SCREEN_HEIGHT = UIScreen.main.bounds.size.height 
var BASE_SCREEN_HEIGHT:CGFloat = 736.0 
var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT) 
var ASPECT_RATIO_RESPECT_OF_7P = SCREEN_MAX_LENGTH/BASE_SCREEN_HEIGHT 

ステップ3:あなたが行われ

。今これを使う方法。ちょうど書くあなたがのviewDidLoad

に定数30

をリードしているボタンに自動レイアウトをしたとします

yourButtonLeadingConstraint.constant = 30 * ASPECT_RATIO_RESPECT_OF_7P 

をのみ、このラインのために、それは他のすべてのデバイスで30Pxの縦横比を維持します。

ステップ4:

何デバイスの向きはどうですか?

は姿勢の変化に対応するには、この方法を利用

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
     if UIDevice.currentDevice().orientation.isLandscape.boolValue { 
      print("Landscape") 
      //write your code here such changing autolayout value 
     } else { 
      print("Portrait") 
      // write your code here such changing autolayout value 
     } 
    } 

と呼ばれる機能があります。

注:

あなたは風景モードのためのあなたのレイアウトを変更したい場合は、それがtoo.No行うことができます あなたはそれをGoogleや、適切な答えを見つけることができますit.Iが考えて行う方法について多くのチュートリアルがあります。 。

関連する問題