let screenSize = UIScreen.main.bounds.height
let IS_IPHONE_4_OR_LESS = screenSize < 568.0
「在自身可用之前不能在屬性初始值設定項中使用實例成員」這是執行代碼時得到的錯誤。初始化錯誤
let screenSize = UIScreen.main.bounds.height
let IS_IPHONE_4_OR_LESS = screenSize < 568.0
「在自身可用之前不能在屬性初始值設定項中使用實例成員」這是執行代碼時得到的錯誤。初始化錯誤
常量指的是一個程序可能無法在執行過程中改變的固定值。 IS_IPHONE_4_OR_LESS
是一個常數,因此它需要在初始化一個類時的固定值,因此這個錯誤。在你的情況下,它計算基於屏幕高度的價值,所以你可以聲明它像一個計算屬性如下
class Constants: NSObject {
let screenSize = UIScreen.main.bounds.size.height
var IS_IPHONE_4_OR_LESS: Bool {
return screenSize < 568
}
}
在初始化屬性時不能使用任何實例變量,而不應使用下面的代碼。
class constant : NSObject {
let screenSize = UIScreen.main.bounds.height
var IS_IPHONE_4_OR_LESS = false
override init() {
IS_IPHONE_4_OR_LESS = screenSize < 568.0
}
}
試試這個:
你需要創建常量static
static let screenSize = UIScreen.main.bounds.height
static let IS_IPHONE_4_OR_LESS = screenSize < 568.0
您可以用這種方式來檢查你正在使用的iPhone:
struct ScreenSize{
static let width = UIScreen.main.bounds.size.width
static let height = UIScreen.main.bounds.size.height
static let maxLength = max(ScreenSize.width, ScreenSize.height)
static let minLength = min(ScreenSize.width, ScreenSize.height)
static let scale = UIScreen.main.scale
static let ratio1619 = (0.5625 * ScreenSize.width)
}
struct DeviceType{
static let isIphone4orLess = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.maxLength < 568.0
static let isIPhone5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.maxLength == 568.0
static let isIPhone6 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.maxLength == 667.0
static let isIPhone6p = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.maxLength == 736.0
}
然後使用這個爲:
if DeviceType.isIPhone5 {
//Do iPhone 5 Stuff
}
請不要這樣做。 – davidf2281
Swift對其變量使用兩階段初始化。
Swift中的類初始化是一個兩階段過程。在第一個 階段,每個存儲的屬性由引入它的類 分配一個初始值。一旦每個存儲的屬性 初始狀態已經確定,第二階段開始,每類給出 機會定製前進一步 新實例被視爲準備使用它的存儲性能。
因此,在對它們進行初始化之前,您無法訪問實例變量。您可以使用getter
此變量嘗試使用此
let screenSize = UIScreen.main.bounds.height
var IS_IPHONE_4_OR_LESS :Bool{
get{
return screenSize < 568.0
}
}
請[在錯誤上搜索](http://stackoverflow.com/search?q=% 5Bswift%5D +在發佈之前,無法+ + + + + + + + + + + + +) – rmaddy