DEMO VIDEOS Get to know everything Vimeo can do for your business. Watch now
Android でいう 9-Patch 的な画像引き延ばしができる。(9-Patch ほど小回りは効かない) 角丸ボタンなんかの素材は小さく作っておいて、実装側で引き延ばすやり方がエコかもしれない。 その場合、細かいノイズをかけたようなデザインは避け、平坦なグラデーションの方が都合が良い(ノイズ等だと残念な感じに引き延ばされ汚くなる)。 ノイズ系には後述の UIImageResizingModeTile を使用すると良い。 UIImage *image = [UIImage imageNamed:@"ButtonNoGazou.png"]; // image の上0pt, 左4pt, 下2pt, 右8pt の padding を残して引き延ばす UIImage *btnbg = [image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4
矢口裕也です。 Advent Calendar 10日目はiOSのUITableViewの話をします。 ぼやき iOSアプリを開発していると70%くらいの時間はUITableViewに費やしている気がしてきます。 UITableViewは非常にめんどうなものですが、パフォーマンスがシビアでかつユーザーの快適さに直結するものなので大いに手間をかける価値があります。 この記事ではガクガク処理落ちするUITableViewを例として改善していきながら快適なUITableViewのつくりかたを解説します。 目的 以下のケーススタディでは次の目的でコードを改善していきます なめらかに動くようにする ここでのポイントは実際速くなくてもユーザが快適に感じればOKである、ということです。処理速度が高速である必要はありません。 戦略 UITableViewでのパフォーマンス問題は次の2点であることが多いです
UIKitやFoundationには、iOS 2.0のころから存在するのに、意外と知られていない便利なメソッドやプロパティがたくさんあります。今回はUIViewのメソッドをご紹介します。 UIViewはUIViewControllerと違ってライフサイクルが単純で、どのタイミングで自分自身が画面上に追加されたのか、どのタイミングで自分自身が画面から外されたのか、などを把握しづらいとお嘆きの方がいらっしゃると思います。事実その用途のためだけにUIViewControllerを使ってプログラミングをしている人も見かけます。そこで以下のメソッドをご紹介です。willMoveToSuperview:自分自身が新しいSuperview以下に移動しようとしたとき(新しいSuperviewに対してaddSubview:されようとしたとき)に呼び出されます。didMoveToSuperview自分自身が新
Twilio Client SDK for iOS とは Twilio Client SDK for iOS とは Twilio サービスを iOS から使うための公式ライブラリです。Twilio サービスを使うとさまざまなアプリに IP 電話機能をつけることができます。 ということで、iOS 版にも Android 版と同様のサンプルがあるのでまずは動かしてみたいと思います! 用意するもの Twilio アカウント (無料から始められます) Xcode (iOS SDK 4.2 以上) Twilio Client SDK for iOS iOS 端末 (4.2以上) とプロビジョニングファイル (iOS デベロッパー登録が必要) サンプルアプリを動かしてみる ということで、サンプルアプリである HelloMonkey というアプリを作ってみたいと思います。今回実装する内容は以下のとおりで
iOSのframework作成をしようと、いろいろ参考にしたけど、すごく詰まったので一応書いておく Xcodeのバージョンは4.6 Project作成 [File]→[New]→[Project] を選択 [iOS]→[Framework & Library]→[Cocoa Touch Static Library] で [Product Name] "MyLibrary" と入力(名前を決める。***.framework の *** の部分) [Organization Name] と [Company Identifier] は適当に [Include Unit Tests] はどちらでも [Use Automatic Reference Counting] はチェック入れたままで で パスはまあ適当に好きな所に作成 Headerディレクトリ作成 Xcode の MyLibrary デ
Xcode 4.6.3でiOS Framework(.framework)を作る過程を忘れないためのメモ。 【前提知識】 iOS Frameworkテンプレートは無い。 先人の知恵を借りるとiOS用Frameworkは作れる。 *疑問 なぜAppleはiOS Frameworkテンプレートを用意してない? カスタムなiOS Frameworkは作っちゃいけないの? 【参考サイト】 Apple: Introduction to Framework Programming Guide Xcode4でのiOS Frameworkの作り方 iOS: 自作Frameworkを作る Xcode4.5.1でiOS用のframeworkを作成する Xcode4.6でiOS framework作成 [iOS] Static Library (5) Frameworkを作成する How to create c
CGContextSetLineWidth(ctx, 0.5f); CGContextSetStrokeColorWithColor(ctx, [UIColor alloc] blackColor].CGColor); CGContextMoveToPoint(ctx, 10, 0); CGContextAddLineToPoint(ctx, 10, 100); CGContextStrokePath(ctx); CGFloat lineWidth = 0.5f; CGContextSetLineWidth(ctx, lineWidth); CGContextSetStrokeColorWithColor(ctx, [UIColor alloc] blackColor].CGColor); CGContextMoveToPoint(ctx, 10+lineWidth*0.5, 0); CG
つまり、 PostモデルはCommentモデルを複数持っている。 Commentモデルには画像がある。 なので1つのPostに複数の画像が入る場合がある。 #{Rails.root}/postsにPOSTのリクエストを投げることでPostモデルが作成される。 Objective-Cのコード AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //POSTするパラメータを設定。 NSDictionary *parameters = @{@"post": @{@"title": @"form-iOS-t"}}; //今回、投稿するための画像はローカルにある画像を使用。 UIImage *image = [UIImage imageNamed:@"one.png"]; NSData *
インジケーターを使いたいけど、普通にaddSubViewしてもnavigationBarの上には表示されない。でも以下のようにすれば乗っかる。 UIWindow* window = [UIApplication sharedApplication].keyWindow; window = [[UIApplication sharedApplication].windows objectAtIndex:[[window subviews] count] - 1]; window.rootViewController = [window rootViewController]; ind_ = [[indicatorView alloc] init]; ind_.view.frame = CGRectMake(0, 0, 320, 480); [window addSubview:ind_.vi
独自にUIWindowのサブクラスを定義して使う方法について。ARC前提。 ウインドウ生成 まずウインドウのインスタンスを作る。サブクラス化するとカスタマイズしやすい。ウインドウレベルを設定すると、ステータスバーやアラートの上に表示する事も可能。 Cocoa Controls 界隈で見かける「ステータスバーの上に表示する系」のものはウインドウレベルを利用していることが多い。 - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // ウインドウレベルを設定したり self.windowLevel = UIWindowLevelAlert; } return self; }
アラートっぽいのを表示するライブラリを作りたくなって,UIWindowを使ってみた. なんでwindowを使ったかというと,普通にviewにaddSubview:するのだと常に前面に表示されている保証が無いし,ライブラリのくせに自分の管理してないviewの階層をいじくるのはちょっとアレかなあと思ったから. UIWindowとは 昨今のモダンな環境でiOSアプリを作ってるとUIWindowを自分で作ることはまずないので気にしたこと無いかもしれないけど,UIWindowは特別なUIViewでview階層のルートとなるviewのこと. iOSアプリは例外なく全てのアプリが少なくともひとつのUIWindowを持っている. Xcode 3くらいまではテンプレートでwindowとってきてmakeKeyAndVisibleしていたのでなんとなく覚えている人もいるかと思う. Macと違ってiOSではひとつ
状況: 画面が10個ほどあるiPhoneアプリ UIViewControllerのviewWillAppear等にログを仕込みたい。 すでにUIViewControllerを継承したクラスが多数あって、全部にログを仕込むのはめんどくさいしダサくていやだ。 解決策: method_exchangeImplementationsでメソッドを入れ替えてしまえばいいよ! 黒魔法へようこそ Objective-C Runtime には、method_exchangeImplementations()という関数が用意されています。これで「メソッドの交換」が可能となります。これはSDKで提供されているクラスのメソッドも入れ替える事が可能です。なのでUIViewControllerのviewWillAppear等を自作メソッドと差し替える事が出来ます。この差し替えは、動的に行われるので、動作する環境に応じ
Push通知を実装する際AppDelegateにて以下のメソッドを追加する必要があります。 didRegisterForRemoteNotificationsWithDeviceToken didReceiveRemoteNotification NotificationCenterを利用することで処理自体は外部化できますが、こちらのメソッドは独自にPushを記述する必要があります。 ほんの数行ではありますができることなら簡略化したいと考えていたところ、「Growth Push」というサービスのSDKにて実現していたので実装方法を調べてみました。 このクラスではアプリのAppDelegateに処理を割りこませるため、他の処理と競合する場合は、GrowthPushクラスにより必要な処理だけを必要なタイミングで実行する必要があります。 https://growthpush.com/docume
タイトルの通りのことをやりたかったんでググってみました! みんな思うところは同じなんだね。たくさん見つかったよ。 と、思いきや。。。 見つかったのは任意のUIViewControllerをインスタンス化してそこへ画面遷移させようとかそういったものばかり。 つまり、今あるUIViewControllerのインスタンスを取得するのではなく、別ものを作ってしまうということ。 これでは意味がないのですよ!!! あれこれ試行錯誤しているうちに、オフィシャルのAPIドキュメントに辿り着き(はじめから見ておけよ 汗)、 見つけましたよ、実質的に今表示されているUIViewControllerのインスタンスをとってくる方法。 [self.window.rootViewController presentedViewController]; これで今アクティブになっているUIViewControllerのイ
DeNAで取り組んできた非ゲームの新規事業開発。その新規サービスの中で、iOS開発にフォーカスして、利用頻度の高かったライブラリやサービスをランキング形式でお届けします。 紹介してくれるのは、DeNAエンターテインメント事業本部でiOS/サーバ周りを担当している沖津貴智さんです! by 馬場美由紀 (CodeIQ中の人) DeNAにおけるiOSアプリ開発 DeNA沖津です。DeNAでは、エンターテインメント事業本部という部署を新設し、非ゲームの新規事業開発に取り組んできました。 1年以上経過した現在、十数のサービスを開発し、リリース・運用を行ってきました。社内のGithub Enterprise上には、たくさんのプロジェクトのリポジトリが作成されており、エンジニア全員が自由に閲覧・プルリクエストを送れる環境にあります。 詳しくは、デブサミ2014「DeNAにおけるゲーム以外の新規事業の立ち
Swift を学ぼう 弊社でも iOS エンジニアはもちろん、サーバーサイドのエンジニアや AWS エンジニアも Swift に興味津々です。Objective-C より読みやすく、モダンな書き方になっている反面、仕様を読み込んでみるとちょっと分かりづらいところもあったりします。 そこで、これまで Web で公開されている Swift について学べる記事を日本語の記事を中心にまとめてみました。今後も有益な情報が公開されたらガンガン追記していきます! 公式情報 一番有益な情報は間違いなく公式の情報です。 Xcode 6 から導入されたツール「Playground」で試しながら読んでいくことを想定して書かれているようです。Playground を使って挙動を確認しながら学ぶのが一番良いと思います。 Swift Programming Language | Apple Developer The
[XCODE] iPhoneアプリからHTTP送信する際に、POST送信、ヘッダ付与、クッキー付与を行う方法 先日の記事で「iPhoneアプリからHTTPを送信する方法」 (→こちら)にて、基本的な操作を記載しました。 今回は、POST通信を行う方法、HTTPヘッダーを追加する方法、Cookieを付与する方法を学んだので、 それらをブログに書きたいと思います。 まずはPOST通信を行う方法 NSURLRequestで通信を行う場合には、GET通信となってしまいます。 POSTを選択したい場合には、NSMutableURLRequestというクラスを用いて、メソッドの変更を行います。 利用例は以下のような感じです。 // 送信したいURLを作成する NSURL *url = [NSURLURLWithString:@"http://www.yoheim.net/"]; // Mutableな
アイリッジでは様々なスマホ向けのサービスを開発していますが、その際にあると便利なのが端末を識別するIDです。 本日は端末を識別するIDについて、最新の動向をご紹介したいと思います。 iOS UDID 端末を識別するIDと聞いて多くの方が真っ先に思い浮かべるのは、UDIDではないでしょうか。 UDIDは端末を一意に識別する強力なIDです。 しかし、複数のアプリ間で特定のユーザーを追跡可能で、ユーザーが自由にIDを変更することができないため現在は利用できません。 iOS5の時代にUDIDの取得が非推奨になり、iOS6の時代にUDIDを取得するアプリはAppStoreでの公開を拒否されるようになりました。 iOS7では、UDIDを取得すると “FFFFFFFF”+identifierForVendor(後述)が返されるようになっています。 MACアドレス iOS5の時代にUDIDの取得が非推奨に
もりやまです。前回は iPhone / iPad アプリ開発で使える Objective-C のライブラリをいくつか使ってみました。 今回は、自分で作ったライブラリを Framework として使う方法をご紹介します。 ライブラリ用にプロジェクトを準備する 新規プロジェクトで、iPhone OS の Library から「Cocoa Touch Static Library」を選択します。 プロジェクトを作ると以下のような状態で生成されます。ここでは「KrayKit」という名前で作りました。 まずは不要なファイルの削除と、ファイルシステム上のプロジェクトのディレクトリ構成を整備します。 Classes を削除 Include, Resources, Sources を作成 次に、Xcode 上でプロジェクトの構成を整備します。 Classes を削除 Foundation.framewor
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く