サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
ios.ch3cooh.jp
UIScreenクラスは、ディスプレイに関する情報を取得することができるクラスです。 ディスプレイサイズを取得する ディスプレイサイズを取得するには、UIScreenクラスのscaleプロパティを使用します。 CGRect screenSize = [[UIScreen mainScreen] bounds]; ディスプレイの密度を取得する UIScreenクラスのscaleプロパティを取得することで、ディスプレイの密度を取得する事ができます。これによって実行デバイスがRetinaディスプレイを搭載しているかどうかを判定することができます。 CGFloat scale = [[UIScreen mainScreen] scale]; このscaleの値が、iPhone 3GSやiPad miniの標準解像度の場合は1.0、iPhone 4以降のRetinaディスプレイの場合2.0となります
過去にObjective-CでNSCalendarクラスとNSDateComponentsクラスを使って、以下のような現在の年度をNSNumber型で取得するメソッドがありました。このメソッドを - (NSNumber*)yearNumber { NSCalendar* gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; NSDateComponents* comp = [gregorian components:NSYearCalendarUnit fromDate:[NSDate date]]; return [NSNumber numberWithInteger:comp.year]; } iOS 8 SDKを使ってビルドをすると、下記のようなワー
AdWhirlは、2013年にGoogle Admobに買収され、Google AdMob 広告ネットワーク メディエーション(AdMob Ad Network Mediation)への移行期間を経て2013年9月30日にサービスを終了しました。 このようにスマートフォンアプリの広告関連の会社は興隆が活発におこなわれる分、他の会社に買収されてしまってサービスを辞めてしまったり形態を変更するということがあります。または広告SDKの仕様変更に伴い、ある日突然広告が表示されなくなる可能性もあります。更に不安なことを考えると、テレビや大手ニュースサイトなどで自分のアプリが紹介され、急激にインプレッション数が増加したせいで、不正利用と見なされてアカウントをBANされる可能性もあります。 頻繁にアップデートしている(メンテナンスしている)アプリの場合だと、バグ修正やパフォーマンス改善のついでに、広告S
2月からかなり久しぶりにiPhoneアプリを作るお仕事をしています。 月曜日にデザインをデザイン仕様書をもらいました。どんなアプリかというと、日本地図が表示されていて「関東地域」の部分をタップすると「関東地域」が拡大表示されて、さらに「東京都」をタップすると東京との情報が表示されるようなアプリです*1。 iPhoneを使っている方なら「ウェザーニュース タッチ」みたいな感じと言えば分かるでしょうか。下図のように日本地図から黄色の枠線で囲まれた「近畿」の部分をタップすると、より詳細な地図が表示されます。 「北海道」「東北」「関東」……と、ViewControllerにUIButtonを重ねてペタペタ貼って、ボタンに画像を貼り付けて位置調整して完了っ♪ 画像の透明部分が無視されないUIButton ……と安易に考えていたのですが、ところがどっこいUIButtonは画像を設定して、(画像の)透明
特定の範囲の乱数を求める際には、Objective-Cと同じようにarc4random関数を使うことができます。 //0から9までの値を取得する let random = arc4random() % 10 上記のコードではarc4random関数で得た乱数の余剰を求めているため、arc4random関数では生成される乱数にやや偏りが発生してしまいます。 事前に0から9までの値が欲しいということが分かっているのであれば、arc4random_uniform関数を使うと良いでしょう。 //0から9までの値を取得する let random = arc4random_uniform(10) 例えば、String型の配列からランダムに1つ取り出す場合には以下のように書くことができます。 var titles: [String] = [ "ほげ", "ぽよ", "ぴよ", "ぷよ" ] let in
本記事では、数値の少数点の処理(丸め処理、整数化)をおこなう方法を紹介します。 math.hで定義されているCの関数を使用します。 切り捨て math.hでは下記のように定義されています。 extern float floorf(float); extern double floor(double); extern long double floorl(long double); 以下のサンプルコードは、2.55の小数点部分を切り捨てして2にします。 double value = 2.55; double result = floor(value); // 出力: result => 2 切り上げ math.hでは下記のように定義されています。 extern float ceilf(float); extern double ceil(double); extern long double
カスタムURLスキームを使用して他のアプリを起動する方法をいくつか紹介しました。 カスタムURLスキームを使って地図アプリに位置座標を渡して連携起動する - iOSアプリ開発の逆引き辞典 カスタムURLスキームを使って通話アプリに電話番号を渡して連携起動する - iOSアプリ開発の逆引き辞典 上記で紹介した方法は、呼び出し元アプリと呼び出し先アプリが異なるケースです。呼び出し元が呼び出し元のカスタムURLスキームを使っているケースはあまり知りません。 本記事では呼び出し元アプリ側にカスタムURLスキームを設定して、呼び出し元アプリがカスタムURLスキームを使って自分自身を呼び出す方法を紹介します。 使い道はあまりないかもしれませんが、カスタマイズ可能なAR機能を提供するAurasma SDKやグループチャット機能を提供するLobi SDK(旧称:nakamap SDK)を使用して、制御がア
NSString型の文字列を画像に変換します。「サイズを指定して空のUIImageオブジェクトを生成する - iOSアプリ開発の逆引き辞典」をベースとしています。 - (UIImage *)imageWithString:(NSString *)text { // 描画するサイズ CGSize size = CGSizeMake(34, 18); // ビットマップ形式のグラフィックスコンテキストの生成 // 第2引数のopaqueを`NO`にすることで背景が透明になる UIGraphicsBeginImageContextWithOptions(size, NO, 0); // 描画する文字列の情報を指定する //-------------------------------------- // 文字描画時に反映される影の指定 NSShadow *shadow = [[NSShadow
iOSアプリレビューサイトで有名なAppBankが始めた「AppBank Network」という広告配信サービスの広告を掲載してみましょう。AppBank Networkは、バックボーンに株式会社ファンコミュニケーションズのnendを使っています。そのためAppBank Networkの広告を表示するにはnendSDK iOSを利用します。 AppBank Networkのパートナー登録が完了した状態で、以下のアドレスから管理ポータルにログインして、nendSDKをダウンロードする必要があります。 http://nend.net/ nendSDKは、2013年9月26日にリリースしたバージョン2.2.1にてarm64に対応し、同年11月5日にリリースされたバージョン2.3.0でアイコン型広告にも対応しました。 AppBank Network(nendSDK iOS)をプロジェクトに取り込み
iOSではビットマップは32bitのRGBAで扱われます。 重なりあった複雑な描画やUIViewのヒットテストでhitTest:withEvent:メソッドの判定などでUIImageに設定されている画像のアルファ値(alpha channel)を使いたいシーンがあります。 本記事ではUIImageオブジェクトからアルファ値の配列を取得する方法をご紹介します。 - (NSData *)alphaDataWithImage:(UIImage *)image { CGImageRef imageRef = image.CGImage; CFDataRef dataRef = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)); NSData *pixelData = (__bridge NSData*) dataRef; unsign
フォントを指定して、文字列が描画されるサイズを求めるのにiOS 6まではsizeWithFont:メソッドとsizeWithFont:constrainedToSize:lineBreakMode:メソッドを使っていました。iOS 7ではこれらのメソッドの使用が非推奨になっています。 - (CGSize)sizeWithFont:(UIFont *)font; - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode; ベースSDKがiOS 7.0以上になっていて、これらのメソッドを使
本記事では、UIImageオブジェクトをプログラム(コード)だけで動的に生成する方法を紹介します。 塗りつぶされた円が描画されたUIImageオブジェクトを生成する 塗りつぶされた円を描画するにはCGContextFillEllipseInRect関数を使用します。 - (UIImage *)imageFillEllipseWithColor:(UIColor *)color size:(CGSize)size { UIImage *image = nil; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphicsBeginImageContextWithOptions(size, 0.f, 0); // 現在のグラフィックスコンテキストを取得する CGContextRef context = UIGraphicsGetCurrentContext(); // 塗りつ
@interface部分でiAd.hをインポートします。 #import <iAd/iAd.h> @interface ViewController() <ADBannerViewDelegate> { } @property (weak, nonatomic) ADBannerView *adView; @end viewDidLoadメソッドでADBannerViewを生成してviewに追加しています。 - (void)viewDidLoad { // 〜〜〜 中略 〜〜〜 // バナー広告を入れる self.adView = [[ADBannerView alloc] init]; self.adView.delegate = self; // 広告が受信できるか分からないのでアルファ値を0にして隠しておく self.adView.alpha = 0.f; [self.view ad
UIPageViewControllerを継承して必要なデリゲートを実装し終わった時点で、画面下部のPageControlが表示されてしまうのに気付かれるかと思います。 このPageControlは、UIPageViewControllerのTransition Styleが UIPageViewControllerTransitionStyleScrollになっており、かつ以下の2つのデリゲートメソッドを実装している時に表示されます。 これらのデリゲートメソッドを削除するか - (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController { return [self.pageTitles count]; } - (NSInteger)presentationInd
本記事では、UIImageオブジェクトをプログラム(コード)だけで動的に生成する方法を紹介します。 - (UIImage *)imageWithFillColor:(UIColor *)color size:(CGSize)size { UIImage *image = nil; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphicsBeginImageContextWithOptions(size, 1.f, 0); // 現在のグラフィックスコンテキストを取得する CGContextRef context = UIGraphicsGetCurrentContext(); // 塗りつぶす領域を決める CGRect rect = CGRectMake(0, 0, size.width, size.height); CGContextSetFillColorWith
今までGoogle Analytics SDK for iOS v2を使っていましたが、2014年2月よりiOSアプリのx64対応が必要となり、最新版のSDKであるGoogle Analytics SDK for iOS v3を使う必要が出てきました。 Google Analytics SDKのアップデートは基本的にはファイルの差し替えだけで済みますが、今回メジャーバージョンが上がっていることもあり、画面(ビュー)やイベントをトラッキングするコードも変更しないといけないようです。 ヘッダーの追加 #import "GAITracker.h" #import "GAIFields.h" #import "GAIDictionaryBuilder.h" デバック出力をしない // デバック出力はしない [GAI sharedInstance].debug = NO; ↓ // デバック出力はし
本記事では、すでに画像(UIImageオブジェクト)が複数枚用意されていて、それらのすべての画像を合成させてみましょう。 ここでは例として「わーっ」と描かれたセリフ画像と「滑っているネコ」が描かれている画像を1つの画像として合成させてみます。 - (UIImage *)compositeImages:(NSArray *)array size:(CGSize)size { UIImage *image = nil; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphicsBeginImageContextWithOptions(size, 0.f, 0); // 塗りつぶす領域を決める CGRect rect = CGRectMake(0, 0, size.width, size.height); for (id item in array) { if (![item
iPadだったらこうするiPhoneだったらこうする。はたまた、iPhone 4は良いがiPhone 3GとiPod touch 2Gはメモリが少ないのでこの機能をドロップするなど、端末のモデルによってあれしたいこれしたいという事が多々あると思います。 端末情報を取得する方法についてご紹介したいと思います。 iOSのシステムバージョンを取得する iOSのシステムバージョンを取得するには、UIDeviceクラスのsystemVersionプロパティを使用します。 UIDevice* currentDevice = [UIDevice currentDevice]; NSString* sysVersion = [currentDevice systemVersion]; モデル(機種名)を取得する モデル(機種名)を文字列で取得することができます。UIDeviceクラスのmodelプロパティ
UITableViewは、決められたフォーマット(UITableViewCell)に基づいてリスト形式でデータを表示するクラスです。 データが多くなりリストが長くなった場合には、SectionIndex(セクションインデックス)を使ってセクション単位でのジャンプをする機能を提供します。 セクションインデックスを表示させる UITableViewのセクションインデックスを単純に表示させたい場合、UITableViewDataSourceのデリゲートのsectionIndexTitlesForTableView:メソッドを以下のように実装します。 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { return @[ @"2日", @"3日", @"4日", @"5日", @"6日", @"7日", @"
このページを最初にブックマークしてみませんか?
『ios.ch3cooh.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く