我的應用程序遭到拒絕,因爲它在iPhone 4s和iPad上的iPhone分辨率上看起來不正常。我有一些按鈕與該分辨率的某些字段重疊。問題是,現在我已經查看了XCode,並且看到所有非加iPhone模型具有相同的大小類。我怎麼能在他們之間做出區別?我在代碼中添加這些按鈕。其他字段在IB中添加。iOS - 如何區分iPhone屏幕
編輯:在代碼中添加的這些按鈕以絕對座標定位,IB中添加的字段使用自動佈局。
我的應用程序遭到拒絕,因爲它在iPhone 4s和iPad上的iPhone分辨率上看起來不正常。我有一些按鈕與該分辨率的某些字段重疊。問題是,現在我已經查看了XCode,並且看到所有非加iPhone模型具有相同的大小類。我怎麼能在他們之間做出區別?我在代碼中添加這些按鈕。其他字段在IB中添加。iOS - 如何區分iPhone屏幕
編輯:在代碼中添加的這些按鈕以絕對座標定位,IB中添加的字段使用自動佈局。
你能辨別根據身高不同設備的手機
static let iPhone5sHeight: CGFloat = 568 static let iPhone4sHeight: CGFloat = 480
一般來說,我不會分鏡使用的UIScreen.main.bounds.height <= HeightConstant.iPhone4sHeight
高度值:P但是對於這種情況下,由於使用的是故事板,你可以使用特徵。這些特點可以讓您爲使用尺寸,方向或設備的同一控制器設計多種設計。
http://www.techotopia.com/index.php/Using_Trait_Variations_to_Design_Adaptive_iOS_User_Interfaces
這是沒有任何代碼的乾淨的解決方案。
雖然我有點晚,但我面對確切的問題。
步驟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一下,並找到合適的答案很多教程。
你使用自動佈局嗎? –
[如何在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
也許,但我不確定它會解決iPad的問題。 – kemkriszt