2016-03-03 72 views
-1

我在線學習一些教程,但代碼僅適用於iPad。我正在使用iPhone並且屏幕尺寸不同。問題在於作者使用專爲iPad設計的「魔術數字」。有沒有辦法在不同設備尺寸之間轉換座標點? (iOS)

我已成功創建轉換,以便它可以用於任何設備。例如:

let xMid : CGFloat = CGRectGetMidX(self.frame) 
let yMid : CGFloat = CGRectGetMidY(self.frame) 
print("x: \(xMid) y: \(yMid)") 

let height : CGFloat = CGRectGetHeight(self.frame) 
let width : CGFloat = CGRectGetWidth (self.frame) 

makeSlotAt(CGPoint(x: xMid/4.0,    y: 0), isGood: true) 
makeSlotAt(CGPoint(x: xMid - xMid/4.0,  y: 0), isGood: false) 
makeSlotAt(CGPoint(x: xMid + xMid/4.0,  y: 0), isGood: true) 
makeSlotAt(CGPoint(x: xMid * 2.0 - xMid/4.0, y: 0), isGood: false) 

makeBouncerAt(CGPoint(x: 0,   y: 0)) 
makeBouncerAt(CGPoint(x: xMid/2.0, y: 0)) 
makeBouncerAt(CGPoint(x: xMid,  y: 0)) 
makeBouncerAt(CGPoint(x: xMid * 1.5, y: 0)) 
makeBouncerAt(CGPoint(x: xMid * 2.0, y: 0)) 

無論如何,我想知道是否有一個功能或欺騙片,其具有的器件尺寸之間的數值的轉換。

謝謝!

回答

3

如果您正在使用的教程使用幻數,請立即停止使用它。如果您使用自動佈局並遵循Apple的iOS 7 &的指導原則,則很少需要使用幻數。您創建的功能是進行代碼內測量的良好開端。

+1

是的,這些類型的教程導致應用程序在狀態欄大小增加一倍(例如共享或熱點區域)時會中斷。 –

+1

作爲一個經驗法則,不要使用超過一兩歲的UIKit教程,特別是如果你剛剛開始。 – NRitH

+0

我正在關注的教程被稱爲Hacking with Swift:https://www.hackingwithswift.com – mccoyLBI

相關問題