2017-05-30 100 views
-1

我的應用程序遭到拒絕,因爲它在iPhone 4s和iPad上的iPhone分辨率上看起來不正常。我有一些按鈕與該分辨率的某些字段重疊。問題是,現在我已經查看了XCode,並且看到所有非加iPhone模型具有相同的大小類。我怎麼能在他們之間做出區別?我在代碼中添加這些按鈕。其他字段在IB中添加。iOS - 如何區分iPhone屏幕

編輯:在代碼中添加的這些按鈕以絕對座標定位,IB中添加的字段使用自動佈局。

+0

你使用自動佈局嗎? –

+0

[如何在swift中以編程方式檢查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

也許,但我不確定它會解決iPad的問題。 – kemkriszt

回答

0

你能辨別根據身高不同設備的手機

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

0

雖然我有點晚,但我面對確切的問題。

步驟1:

以一個基本屏幕設計。我選擇iphone 7 plus。

步驟2:

定義一些常數。

爲什麼?

我們需要將它乘以自動佈局約束的常量。

爲什麼要自動佈局?

如果要調整你的應用程序中的所有設備,你必須使用 自動佈局大小類

我給你我的常數:

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步:

你完成了。現在如何使用這個。假設你是自動佈局的按鈕,這已經導致恆30

viewDidLoad中

只是寫:

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一下,並找到合適的答案很多教程。