Qual è l'equivalente di UI_USER_INTERFACE_IDIOM()
in Swift per rilevare tra iPhone e iPad?
Viene visualizzato un Use of unresolved identifier
errore durante la compilazione in Swift.
Qual è l'equivalente di UI_USER_INTERFACE_IDIOM()
in Swift per rilevare tra iPhone e iPad?
Viene visualizzato un Use of unresolved identifier
errore durante la compilazione in Swift.
Risposte:
Quando si lavora con Swift, è possibile utilizzare enum
UIUserInterfaceIdiom
, definito come:
enum UIUserInterfaceIdiom : Int {
case unspecified
case phone // iPhone and iPod touch style UI
case pad // iPad style UI (also includes macOS Catalyst)
}
Quindi puoi usarlo come:
UIDevice.current.userInterfaceIdiom == .pad
UIDevice.current.userInterfaceIdiom == .phone
UIDevice.current.userInterfaceIdiom == .unspecified
O con un'istruzione Switch:
switch UIDevice.current.userInterfaceIdiom {
case .phone:
// It's an iPhone
case .pad:
// It's an iPad (or macOS Catalyst)
case .unspecified:
// Uh, oh! What could it be?
}
UI_USER_INTERFACE_IDIOM()
è una macro Objective-C, definita come:
#define UI_USER_INTERFACE_IDIOM() \ ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? \ [[UIDevice currentDevice] userInterfaceIdiom] : \ UIUserInterfaceIdiomPhone)
Inoltre, tieni presente che anche quando lavori con Objective-C, la UI_USER_INTERFACE_IDIOM()
macro è necessaria solo quando si utilizza iOS 3.2 e versioni precedenti. Quando si esegue la distribuzione su iOS 3.2 e versioni successive, è possibile utilizzare [UIDevice userInterfaceIdiom]
direttamente.
UIDevice.currentDevice().userInterfaceIdiom
diventaUIDevice.current.userInterfaceIdiom
È necessario utilizzare questo framework GBDeviceInfo o ...
Apple lo definisce:
public enum UIUserInterfaceIdiom : Int {
case unspecified
case phone // iPhone and iPod touch style UI
case pad // iPad style UI
@available(iOS 9.0, *)
case tv // Apple TV style UI
@available(iOS 9.0, *)
case carPlay // CarPlay style UI
}
quindi per la definizione rigorosa del dispositivo può essere utilizzato questo codice
struct ScreenSize
{
static let SCREEN_WIDTH = UIScreen.main.bounds.size.width
static let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}
struct DeviceType
{
static let IS_IPHONE_4_OR_LESS = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
static let IS_IPHONE_5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
static let IS_IPHONE_6_7 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
static let IS_IPHONE_6P_7P = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
static let IS_IPAD_PRO = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0
}
come usare
if DeviceType.IS_IPHONE_6P_7P {
print("IS_IPHONE_6P_7P")
}
per rilevare la versione di iOS
struct Version{
static let SYS_VERSION_FLOAT = (UIDevice.current.systemVersion as NSString).floatValue
static let iOS7 = (Version.SYS_VERSION_FLOAT < 8.0 && Version.SYS_VERSION_FLOAT >= 7.0)
static let iOS8 = (Version.SYS_VERSION_FLOAT >= 8.0 && Version.SYS_VERSION_FLOAT < 9.0)
static let iOS9 = (Version.SYS_VERSION_FLOAT >= 9.0 && Version.SYS_VERSION_FLOAT < 10.0)
}
come usare
if Version.iOS8 {
print("iOS8")
}
struct ScreenSize/DeviceType
approccio poiché funziona in Simulator
Swift 2.0 e iOS 9 e Xcode 7.1
// 1. request an UITraitCollection instance
let deviceIdiom = UIScreen.mainScreen().traitCollection.userInterfaceIdiom
// 2. check the idiom
switch (deviceIdiom) {
case .Pad:
print("iPad style UI")
case .Phone:
print("iPhone and iPod touch style UI")
case .TV:
print("tvOS style UI")
default:
print("Unspecified UI idiom")
}
Swift 3.0 e Swift 4.0
// 1. request an UITraitCollection instance
let deviceIdiom = UIScreen.main.traitCollection.userInterfaceIdiom
// 2. check the idiom
switch (deviceIdiom) {
case .pad:
print("iPad style UI")
case .phone:
print("iPhone and iPod touch style UI")
case .tv:
print("tvOS style UI")
default:
print("Unspecified UI idiom")
}
Usa UITraitCollection. L'ambiente tratto iOS è esposta anche se la traitCollection proprietà del protocollo UITraitEnvironment. Questo protocollo è adottato dalle seguenti classi:
se / altro caso:
if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)
{
// Ipad
}
else
{
// Iphone
}
Faccio in questo modo:
UIDevice.current.model
Mostra il nome del dispositivo.
Per verificare se è iPad o iPhone:
if ( UIDevice.current.model.range(of: "iPad") != nil){
print("I AM IPAD")
} else {
print("I AM IPHONE")
}
Swift 2.x:
Aggiungendo alla risposta Beslav Turalov è possibile trovare facilmente la nuova voce iPad Pro con questa linea
per rilevare iPad Pro
struct DeviceType
{
...
static let IS_IPAD_PRO = UIDevice.currentDevice().userInterfaceIdiom == .Pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0
}
struct ScreenSize
{
static let SCREEN_WIDTH = UIScreen.main.bounds.size.width
static let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}
struct DeviceType
{
static let IS_IPHONE = UIDevice.current.userInterfaceIdiom == .phone
static let IS_IPHONE_4_OR_LESS = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
static let IS_IPHONE_5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
static let IS_IPHONE_6 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
static let IS_IPHONE_6P = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
static let IS_IPHONE_7 = IS_IPHONE_6
static let IS_IPHONE_7P = IS_IPHONE_6P
static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
static let IS_IPAD_PRO_9_7 = IS_IPAD
static let IS_IPAD_PRO_12_9 = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0
static let IS_TV = UIDevice.current.userInterfaceIdiom == .tv
static let IS_CAR_PLAY = UIDevice.current.userInterfaceIdiom == .carPlay
}
struct Version{
static let SYS_VERSION_FLOAT = (UIDevice.current.systemVersion as NSString).floatValue
static let iOS7 = (Version.SYS_VERSION_FLOAT < 8.0 && Version.SYS_VERSION_FLOAT >= 7.0)
static let iOS8 = (Version.SYS_VERSION_FLOAT >= 8.0 && Version.SYS_VERSION_FLOAT < 9.0)
static let iOS9 = (Version.SYS_VERSION_FLOAT >= 9.0 && Version.SYS_VERSION_FLOAT < 10.0)
static let iOS10 = (Version.SYS_VERSION_FLOAT >= 10.0 && Version.SYS_VERSION_FLOAT < 11.0)
}
UTILIZZO :
if DeviceType.IS_IPHONE_7P { print("iPhone 7 plus") }
if DeviceType.IS_IPAD_PRO_9_7 && Version.iOS10 { print("iPad pro 9.7 with iOS 10 version") }
Prova ad aggiungere un'estensione come questa:
public extension UIDevice {
var modelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8 where value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
switch identifier {
case "iPod5,1": return "iPod Touch 5"
case "iPod7,1": return "iPod Touch 6"
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4"
case "iPhone4,1": return "iPhone 4s"
case "iPhone5,1", "iPhone5,2": return "iPhone 5"
case "iPhone5,3", "iPhone5,4": return "iPhone 5c"
case "iPhone6,1", "iPhone6,2": return "iPhone 5s"
case "iPhone7,2": return "iPhone 6"
case "iPhone7,1": return "iPhone 6 Plus"
case "iPhone8,1": return "iPhone 6s"
case "iPhone8,2": return "iPhone 6s Plus"
case "iPhone9,1", "iPhone9,3": return "iPhone 7"
case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus"
case "iPhone8,4": return "iPhone SE"
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"
case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad 3"
case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad 4"
case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air"
case "iPad5,3", "iPad5,4": return "iPad Air 2"
case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad Mini"
case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad Mini 2"
case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad Mini 3"
case "iPad5,1", "iPad5,2": return "iPad Mini 4"
case "iPad6,3", "iPad6,4", "iPad6,7", "iPad6,8":return "iPad Pro"
case "AppleTV5,3": return "Apple TV"
case "i386", "x86_64": return "Simulator"
default: return identifier
}
}
}
Ecco come lo userai:
let modelName = UIDevice.currentDevice().modelName
MODIFICA Per il simulatore, puoi provare una soluzione qui
Estensione Swift 4.2
public extension UIDevice {
class var isPhone: Bool {
return UIDevice.current.userInterfaceIdiom == .phone
}
class var isPad: Bool {
return UIDevice.current.userInterfaceIdiom == .pad
}
class var isTV: Bool {
return UIDevice.current.userInterfaceIdiom == .tv
}
class var isCarPlay: Bool {
return UIDevice.current.userInterfaceIdiom == .carPlay
}
}
uso
if UIDevice.isPad {
// Do something
}
In swift 4 e Xcode 9.2, puoi rilevare se un dispositivo è iPhone / iPad in basso.
if (UIDevice.current.userInterfaceIdiom == .pad){
print("iPad")
}
else{
print("iPhone")
}
Un altro modo
let deviceName = UIDevice.current.model
print(deviceName);
if deviceName == "iPhone"{
print("iPhone")
}
else{
print("iPad")
}
Grazie a tutti supporto :))
UIDevice + Extensions.swift
import Foundation
import UIKit
extension UIDevice {
static let modelName: String = {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
func mapToDevice(identifier: String) -> String { // swiftlint:disable:this cyclomatic_complexity
#if os(iOS)
switch identifier {
case "iPod5,1": return "iPod Touch 5"
case "iPod7,1": return "iPod Touch 6"
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4"
case "iPhone4,1": return "iPhone 4s"
case "iPhone5,1", "iPhone5,2": return "iPhone 5"
case "iPhone5,3", "iPhone5,4": return "iPhone 5c"
case "iPhone6,1", "iPhone6,2": return "iPhone 5s"
case "iPhone7,2": return "iPhone 6"
case "iPhone7,1": return "iPhone 6 Plus"
case "iPhone8,1": return "iPhone 6s"
case "iPhone8,2": return "iPhone 6s Plus"
case "iPhone9,1", "iPhone9,3": return "iPhone 7"
case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus"
case "iPhone8,4": return "iPhone SE"
case "iPhone10,1", "iPhone10,4": return "iPhone 8"
case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus"
case "iPhone10,3", "iPhone10,6": return "iPhone X"
case "iPhone11,2": return "iPhone XS"
case "iPhone11,4", "iPhone11,6": return "iPhone XS Max"
case "iPhone11,8": return "iPhone XR"
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"
case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad 3"
case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad 4"
case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air"
case "iPad5,3", "iPad5,4": return "iPad Air 2"
case "iPad6,11", "iPad6,12": return "iPad 5"
case "iPad7,5", "iPad7,6": return "iPad 6"
case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad Mini"
case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad Mini 2"
case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad Mini 3"
case "iPad5,1", "iPad5,2": return "iPad Mini 4"
case "iPad6,3", "iPad6,4": return "iPad Pro 9.7 Inch"
case "iPad6,7", "iPad6,8": return "iPad Pro 12.9 Inch"
case "iPad7,1", "iPad7,2": return "iPad Pro 12.9 Inch 2. Generation"
case "iPad7,3", "iPad7,4": return "iPad Pro 10.5 Inch"
case "AppleTV5,3": return "Apple TV"
case "AppleTV6,2": return "Apple TV 4K"
case "AudioAccessory1,1": return "HomePod"
case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "iOS"))"
default: return identifier
}
#elseif os(tvOS)
switch identifier {
case "AppleTV5,3": return "Apple TV 4"
case "AppleTV6,2": return "Apple TV 4K"
case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "tvOS"))"
default: return identifier
}
#endif
}
return mapToDevice(identifier: identifier)
}()
}
enum DeviceName: String {
case iPod_Touch_5 = "iPod Touch 5"
case pod_Touch_6 = "Pod Touch 6"
case iPhone_4 = "iPhone 4"
case iPhone_4s = "iPhone 4s"
case iPhone_5 = "iPhone 5"
case iPhone_5c = "iPhone 5c"
case iPhone_5s = "iPhone 5s"
case iPhone_6 = "iPhone 6"
case iPhone_6_Plus = "iPhone 6 Plus"
case iPhone_6s = "iPhone 6s"
case iPhone_6s_Plus = "iPhone 6s Plus"
case iPhone_7 = "iPhone 7"
case iPhone_7_Plus = "iPhone 7 Plus"
case iPhone_SE = "iPhone SE"
case iPhone_8 = "iPhone 8"
case iPhone_8_Plus = "iPhone 8 Plus"
case iPhone_X = "iPhone X"
case iPhone_XS = "iPhone XS"
case iPhone_XS_Max = "iPhone XS Max"
case iPhone_XR = "iPhone XR"
case iPad_2 = "iPad 2"
case iPad_3 = "iPad 3"
case iPad_4 = "iPad 4"
case iPad_Air = "iPad Air"
case iPad_Air_2 = "iPad Air 2"
case iPad_5 = "iPad 5"
case iPad_6 = "iPad 6"
case iPad_Mini = "iPad Mini"
case iPad_Mini_2 = "iPad Mini 2"
case iPad_Mini_3 = "iPad Mini 3"
case iPad_Mini_4 = "iPad Mini 4"
case iPad_Pro_9_7_Inch = "iPad Pro 9.7 Inch"
case iPad_Pro_12_9_Inch = "iPad Pro 12.9 Inch"
case iPad_Pro_12_9_Inch_2_Generation = "iPad Pro 12.9 Inch 2. Generation"
case iPad_Pro_10_5_Inch = "iPad Pro 10.5 Inch"
case apple_TV = "Apple TV"
case apple_TV_4K = "Apple TV 4K"
case homePod = "HomePod"
}
SharedFunctions.swift
import Foundation
import UIKit
func isDevice(_ name: DeviceName) -> Bool {
let modelName = UIDevice.modelName.replacingOccurrences(of: "Simulator", with: "").trimmed()
if name.rawValue == modelName {
return true
}
return false
}
String + Whitespace.swift
import Foundation
extension String {
public func trimmed() -> String {
return self.trimmingCharacters(in: .whitespacesAndNewlines)
}
}
Prova questo per verificare che il dispositivo corrente sia iPhone o iPad:
Swift 5
struct Device {
static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad
static let IS_IPHONE = UIDevice.current.userInterfaceIdiom == .phone
}
Uso:
if(Device.IS_IPHONE){
// device is iPhone
}if(Device.IS_IPAD){
// device is iPad (or a Mac running under macOS Catalyst)
}else{
// other
}
Swift 2.0 e iOS 7+ / iOS 8+ / iOS 9+
public class Helper {
public class var isIpad:Bool {
if #available(iOS 8.0, *) {
return UIScreen.mainScreen().traitCollection.userInterfaceIdiom == .Pad
} else {
return UIDevice.currentDevice().userInterfaceIdiom == .Pad
}
}
public class var isIphone:Bool {
if #available(iOS 8.0, *) {
return UIScreen.mainScreen().traitCollection.userInterfaceIdiom == .Phone
} else {
return UIDevice.currentDevice().userInterfaceIdiom == .Phone
}
}
}
Uso :
if Helper.isIpad {
}
O
guard Helper.isIpad else {
return
}
Grazie @ user3378170
Cordiali saluti, ho usato UI_USER_INTERFACE_IDIOM()
per la mia app scritta in Swift. L'app può essere compilata bene con XCode 6.3.1 senza alcun avviso su quel comando, funziona bene su Simulator (con qualsiasi dispositivo selezionato) e su tutti i miei dispositivi reali (iPhone, iPad) con versioni iOS da 7.1 a 8.3.
Tuttavia, l'app si è bloccata sui dispositivi dei revisori Apple (ed è stata rifiutata). Mi ci sono voluti alcuni giorni per rilevare il problema con pochi altri ricarichi su iTunes Connect.
Ora UIDevice.currentDevice().userInterfaceIdiom
invece lo uso e la mia app può sopravvivere a tali crash.
Se vuoi controllare il dispositivo corrente se il suo iPad o iPhone, puoi usare questa riga di codice:
if(UIDevice.currentDevice().userInterfaceIdiom == .Pad){
}else if(UIDevice.currentDevice().userInterfaceIdiom == .Phone){
}
Swift 3.0 :
let userInterface = UIDevice.current.userInterfaceIdiom
if(userInterface == .pad){
//iPads
}else if(userInterface == .phone){
//iPhone
}else if(userInterface == .carPlay){
//CarPlay
}else if(userInterface == .tv){
//AppleTV
}
Hai apportato un paio di aggiunte alle risposte precedenti in modo da ottenere un tipo anziché il valore stringa.
Ho pensato che questo sarebbe stato principalmente utilizzato per le regolazioni dell'interfaccia utente, quindi non pensavo fosse rilevante includere tutti i modelli secondari, ad esempio iPhone 5, ma questo potrebbe essere facilmente esteso aggiungendo test del modello all'array isDevice
Testato in Swift 3.1 Xcode 8.3.2 con dispositivi fisici e simulatori
Implementazione:
UIDevice.whichDevice()
public enum SVNDevice {
case isiPhone4, isIphone5, isIphone6or7, isIphone6por7p, isIphone, isIpad, isIpadPro
}
extension UIDevice {
class func whichDevice() -> SVNDevice? {
let isDevice = { (comparision: Array<(Bool, SVNDevice)>) -> SVNDevice? in
var device: SVNDevice?
comparision.forEach({
device = $0.0 ? $0.1 : device
})
return device
}
return isDevice([
(UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0, SVNDevice.isiPhone4),
(UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0, SVNDevice.isIphone5),
(UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0, SVNDevice.isIphone6or7),
(UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0, SVNDevice.isIphone6por7p),
(UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0, SVNDevice.isIpad),
(UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0, SVNDevice.isIpadPro)])
}
}
private struct ScreenSize {
static let SCREEN_WIDTH = UIScreen.main.bounds.size.width
static let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
static let SCREEN_MAX_LENGTH = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
static let SCREEN_MIN_LENGTH = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}
Ho creato un framework chiamato SVNBootstaper che include questo e alcuni altri protocolli di supporto, è pubblico e disponibile tramite Cartagine.
Da iOS 13, UI_USER_INTERFACE_IDIOM
è stato deprecato. Se il tuo codice è ancora presente Obj-C
, puoi utilizzare quanto segue:
if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
// device is iPad
}
Dove:
typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
UIUserInterfaceIdiomUnspecified = -1,
UIUserInterfaceIdiomPhone API_AVAILABLE(ios(3.2)), // iPhone and iPod touch style UI
UIUserInterfaceIdiomPad API_AVAILABLE(ios(3.2)), // iPad style UI
UIUserInterfaceIdiomTV API_AVAILABLE(ios(9.0)), // Apple TV style UI
UIUserInterfaceIdiomCarPlay API_AVAILABLE(ios(9.0)), // CarPlay style UI
};
if UIDevice.currentDevice().userInterfaceIdiom == .Pad