Багато способів зробити це в Swift :
Ми перевіряємо модель нижче (тут ми можемо здійснити лише регістр):
class func isUserUsingAnIpad() -> Bool {
let deviceModel = UIDevice.currentDevice().model
let result: Bool = NSString(string: deviceModel).containsString("iPad")
return result
}
Ми перевіряємо модель нижче (тут можна здійснити пошук з урахуванням регістру / нечутливості):
class func isUserUsingAnIpad() -> Bool {
let deviceModel = UIDevice.currentDevice().model
let deviceModelNumberOfCharacters: Int = count(deviceModel)
if deviceModel.rangeOfString("iPad",
options: NSStringCompareOptions.LiteralSearch,
range: Range<String.Index>(start: deviceModel.startIndex,
end: advance(deviceModel.startIndex, deviceModelNumberOfCharacters)),
locale: nil) != nil {
return true
} else {
return false
}
}
UIDevice.currentDevice().userInterfaceIdiom
нижче повертається iPad, лише якщо програма призначена для iPad або Universal. Якщо це додаток для iPhone, яке працює на iPad, воно не стане. Тож замість цього слід перевірити модель. :
class func isUserUsingAnIpad() -> Bool {
if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
return true
} else {
return false
}
}
Цей фрагмент нижче не компілюється, якщо клас не успадковує an UIViewController
, інакше він працює просто чудово. Незважаючи на те, що UI_USER_INTERFACE_IDIOM()
повертається iPad, лише якщо програма призначена для iPad або Universal. Якщо це додаток для iPhone, яке працює на iPad, воно не стане. Тому замість цього слід перевірити модель. :
class func isUserUsingAnIpad() -> Bool {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad) {
return true
} else {
return false
}
}
UI_USER_INTERFACE_IDIOM()
еквівалентно([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Ви могли б бути краще кешувати результат де - то:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.