iOSデバイスを判別する「Device」クラス改訂版

iPhone/iPadのデバイス名を判別する Deviceクラスを改良しました。各メソッドを静的メソッドへ変更した事で呼び出しやすくなっています。

このクラスでは以下の事が可能になります。

  1. 使用しているデバイス名・バージョンの取得 (iPhone5/iPhone4/iPad等
  2. 指定したデバイスであるか(真偽値)の取得 (iPhone5であれば、isiPhone5メソッドの呼び出しで 1が返ります

以下からサンプルコードを含めたソースファイルをダウンロードできます。

ダウンロード

サンプルソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (void)setDeviceInformation
{
  //デバイス名の取得
  self.labelIOSDevice.text = [Device iOSDevice];
  //iPhone5であるか
  self.labeliPhone5.text = [NSString stringWithFormat:@"%@%d", @"isiPhone5: ", [Device isiPhone5]];
  //iPhone4/4Sであるか
  self.labeliPhone4.text = [NSString stringWithFormat:@"%@%d", @"isiPhone4: ", [Device isiPhone4]];
  //iPhone3G/3GSであるか
  self.labeliPhone3.text = [NSString stringWithFormat:@"%@%d", @"isiPhone3: ", [Device isiPhone3]];
  //iPad/iPad2/iPad miniであるか
  self.labelIpad.text = [NSString stringWithFormat:@"%@%d", @"isIpad: ", [Device isIpad]];
  //新しい iPad以降であるか
  self.labelIpadRetina.text = [NSString stringWithFormat:@"%@%d", @"isIpadRetina: ", [Device isIpadRetina]];
}

ソースコード

Device.h

1
2
3
4
5
6
7
8
9
10
11
12
#import <Foundation/Foundation.h>

@interface Device : NSString

+ (NSString *)iOSDevice;
+ (BOOL) isiPhone5;
+ (BOOL) isiPhone4;
+ (BOOL) isiPhone3;
+ (BOOL) isIpad;
+ (BOOL) isIpadRetina;

@end

Device.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#import "Device.h"

@implementation Device

+ (NSString *)iOSDevice
{
  if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
      CGSize result = [[UIScreen mainScreen] bounds].size;
      CGFloat scale = [UIScreen mainScreen].scale;
      result = CGSizeMake(result.width * scale, result.height * scale);
      if(result.height == 960){
        return (@"iPhone4");
      }
      if(result.height == 1136){
        return (@"iPhone5");
      }
    } else {
      return (@"iPhone3");
    }
  } else {
    if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
      return (@"iPad Retina");
    } else {
      return (@"iPad");
    }
  }
  return (@"unknown");
}

+ (BOOL) isiPhone5
{
  return ([[Device iOSDevice] isEqualToString:@"iPhone5"]);
}

+ (BOOL) isiPhone4
{
  return ([[Device iOSDevice] isEqualToString:@"iPhone4"]);
}

+ (BOOL) isiPhone3
{
  return ([[Device iOSDevice] isEqualToString:@"iPhone3"]);
}

+ (BOOL) isIpad
{
  return ([[Device iOSDevice] isEqualToString:@"iPad"]);
}

+ (BOOL) isIpadRetina
{
  return ([[Device iOSDevice] isEqualToString:@"iPad Retina"]);
}

@end

関連記事

お薦めの参考書

詳解 Swift 改訂版
Swiftのかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)