サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
tech-gym.com
Swift2.0となり多くの関数やクラスが追加、削除されました。その中の幾つかを紹介したいと思います。 ・実装を隠したい場合用いる構造体 実装する型を隠蔽するための型が作られました。これは実装がArrayやDictionaryにかかわらず、同じ型として扱うことができるようになります。 ・struct AnyForwardCollection 前方向コレクションとして扱うことができます。Indexは常に増えることしかできず、減少させることはできません。 ・struct AnyBidirectionalCollection 双方向コレクションとして扱うことができます。Indexは増減させる事ができます。最後から参照することはできません。 ・struct AnyRandomAccessCollection コレクションとして扱うことができます。Indexは増減させる事ができます。最後から参照する
UITabBarControllerはタブバーのコントローラーですが、 タブバーは細かいデザインの調整を行う場合はUITabBarControllerのサブクラスを作って実装するパターンが多いと思います。 一つのStoryBoardに全てのタブの参照がある場合はInterface Builderなどでもある程度はデザインを設定できますが、StoryboardをViewController毎やタブ毎等に分けていた場合はInterface BuilderだけだとIBOutletを結べなくなります。 運用的にはタブやViewControllerでstoryboardファイルを分けた方が扱いやすいと感じるので、タブを関連付けるにはUITabBarControllerのサブクラスを作ってコードで結んでいく必要があります。 Storyboardを1画面ごとに分割した話 – 24/7 twenty-fo
前回お知らせしていたように第1回 Tech-Gym byプラスアール @SMS : ATNDというiOS勉強会を開催しました。 HealthKit.framework概要 - azu スライド: HealthKit.framework概要 私はHealthKit.framework概要というテーマで発表しました。 基本的にはブログで紹介していたものをまとめた感じになっています。 HealthKit + PromiseKit事始め 基本的なデータの読み書き | Technology-Gym HealthKitのデータを集計してグラフ化 – HKStatisticsCollectionの使い方 | Technology-Gym またスライドではコードはあまり含めていませんが、実際に動くものとして以下にそれぞれサンプルコード、アプリを用意してあります。 azu/ReadHealthKit azu
コードがたくさんあって大変でしたね。ここまでお疲れ様でした。今回の記事でプッシュ機能は完成です。 前回の記事のMainActivityのソース内、登録ボタンを押したときの処理に、こんな記述があったと思います。 // レジストレーションIDを取得 mProgress = null; Handler mHandler = new Handler(); mProgress = new ProgressDialog(context); mProgress.setMessage(RegisterTask.message); mProgress.show(); RegisterTask t = new RegisterTask(context, mHandler, mProgress, regid, prefs, tv_id); t.start(); これは通信部分をHandlerで処理しているのです
この記事はXcode6β4の時点でのHealthKitについて扱っています。 HealthKit + PromiseKit事始め 基本的なデータの読み書き | Technology-Gym では、HealthKitを使った基本的な読み書きについて紹介しました。 単純に読み書きするだけでも様々なデータの型が用意されたり、データ共有もできるの使う意味はありますが、 さらにHealthKitにはHKStatisticsという統計(集計という方が近い?)処理するクラスが用意されています。 HKStatisticsとHKStatisticsCollectionというクラスが統計処理に関係するものです、 それぞれ取得するのにHKStatisticsQueryとHKStatisticsCollectionQueryというのものを使います。 以下の記事を先に読んでおくと理解しやすいでしょう。 Health
iOS8からHealth.appとHealthKitというフレームワークが追加されました。 HealthKitはCoreDataのようなアプリ間で共有できる健康データの読み書きや健康情報に関する単位やformatter、統計計算が行えるフレームワークです。 HealthKit – Apple Developer HealthKitが扱う範囲は幅広いため、この記事ではデータの書き込みと読み込みを例にHealthKitの基本的な使い方について学んで行きたいと思います。 2014年7月25日(金)に第1回 Tech-Gym byプラスアール @SMS 【iOS勉強会、開発者向け】 : ATNDというイベントで、Healthkitについて喋ります。 詳細はTech-GymというiOS勉強会を開催しますの方を見て下さい。 基本的なクラス HealthKitではかなりの数のクラスや単位の定義等が用意さ
DeployGateを使ってのアプリのテスト方法を書いていきます。 今回はテスターさんたちが導入する方法です。 DeployGateは導入が非常に簡単なので、いくつかの注意事項に気を付けていればすぐに使いこなせるようになります。 あ、Androidアプリに関する記事なのでiOSの方は別の記事をご参照ください。 ①開発者さんはアプリの配布ページを作成しましょう APKをアップロードすると、DeployGateの管理画面に新規アプリが追加されます。 その際にこんな画面が出るので、「共有用のリンクを作成する」のタブをクリックします。 リンクの作成は画面を閉じてしまった後でも可能です。管理ページの右上に「共有用のリンクを追加」というボタンがあるので、それをクリックすれば作成されます。 配布ページはこんな感じです。 配布ページにアクセスしたら、URLをコピーしておきましょう。 ②テスターさんたちは開
UIScrollViewのようなスクロールできるViewをPDFとして出力するようなものを書いてみました。 azu/ScrollViewToPDF PDFと言っても、スクリーンショットをPDFにしてるのと同様です。(文字列も画像データになってしまうためコピペ等はできない) 単純にやるなら、 UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, YES, 2.0);のような方法で、ScrollViewの描画内容を UIImageとして取得できるので、UIScrollView -> PNG(ScreenShot) -> PDF というフローでScrollViewの描画内容をPDFに出力できます。 ただ、このような遠回りをしなくても UIKitにはUIGraphicsBeginPDFContextToDataというような描画
のように定義するとMagicalRecordのログを無効化出来るのですが、CocoaPods経由で入れると順番の依存などの問題によりログが無効にできない場合があります。 そういう場合は、CocoaPodsでインストールする際に以下のような感じでPodfileにhookスクリプトを書くと、 Pods側のheaderに#define出来ます。 元ネタはios – Cocoapods: turning MagicalRecord logging off – Stack Overflowです。 CocoaPodsのHooksについて以下も参考にするといいかもしれません。 Podfile’s post_install hook example – KISS Acknowledgements · CocoaPods/CocoaPods Wiki Transition guide · CocoaPods
iOS6とiOS7の対応するときに少し迷うのがナビゲーションのボタンについてですが、 どのようにして見た目を分けるかについてのメモです。 iOS7 iOS7だとUIAppearanceを使ったナビゲーションのボタン画像をつける処理が少しおかしい感じで、 画面毎に設定しなおさないと行けない感じに見えます(何か別の方法があるのかもしれません) Xcode – ios7のnavigationbarをios6以前のデザインに合わせる方法 – Qiita [キータ] そのため、バッサリボタン画像は捨てて、標準のテキストなボタンで表示することにしています。 なので、UIAppearanceなどはなにも適応しないで、tintColorなどを合わせているだけになっています。 ナビゲーションのtintColorを合わせるのに以下のようなサンプルアプリを使ってます。 azu/NavTintTester7 iO
Xcodeでは自分でビルドしたアプリのapplicationDataを.xcappdata(中身はアプリのディレクトリが殆どそのまま入ってる)として取り出すことができ、 この.xcappdataを使うとXcodeからそのアプリの状況を再現してデバッグをすることが出来ます。 詳しくは以下の記事を読んでみて下さい 中級者向け iOS デバッグ Tips – jarinosuke blog 自分でビルドしてiPhoneに追加したアプリはXcode の Organizer に表示されるのですが、 AppStoreから入れた場合、デバッグビルドで上書きしてもXcode の Organizerに表示されないことがあります。 今回はAppStoreで入れたものでも、 Xcode の Organizerにでるようにする方法についての話です(もちろん、自分でビルドできるものに限ります) 単純にまとめるとip
CoreDataを扱うライブラリであるMagicalRecordをよく使いますが、 MagicalRecord では保存するデータベースファイル(デフォルトはアプリ名.sqlite)の名前指定するメソッドしか用意されていません。 具体的には、Setting up the Core Data Stackにかかれているようにsetup*経由で初期化処理をする際に、ファイル名を指定することが出来ます。 にsqliteファイルが保存されます。 アプリのディレクトリ ├── Documents ├── Library │ ├── Application\ Support │ │ └── アプリ名 │ ├── Caches │ └── Preferences ├── アプリ名.app └── tmp しかし、すでに Documents/アプリ名.sqlite というようにDocum
デザイナーさんと一緒に仕事する時に、iOSアプリで使う画像のファイル名について悩むことがあります。 例えば、button.png や arrow.png といった、ユニークじゃない名前がファイル名に使われると、 画像が少ないうちはいいですが、画像が多くなると、どこに/いつ使われるべき画像なのかがファイル名から読み取ることが難しくなってしまいます。 また、button01.png のような連番になると、その順番が崩れた時に問題が起きたり、何か命名ルールについて共通の認識が欲しいなーと思っていました。 画像ファイル名の命名規則 New York Times Mobile Team の Objective-C(iOSアプリを書く言語)についてのコーディングルール(コードを書く作法)が公開されていて、 NYTimes/objective-c-style-guide この中に、画像のファイル名の命名
iOSアプリで初回起動時にアプリケーションの説明などのチュートリアルを設ける事がありますが、 よく見かけるパターンが何個かあると思います Chardin.js のように実際の画面で、説明したい部分に説明を載せる感じの方法。 workshirt/WSCoachMarksView のようなスポットライトあてて説明するのも似たようなパターンです。 もう一つは、これが実装もしやすいのでよく見かける気がしますが、 チュートリアル用の画面を用意して表示するタイプ。 evernoteのアプリなどもそうですが、PageControlを使ってスワイプして進めるタイプが多いです。 これは、StoryBoardで実際にそれぞれの画面を作って、 NavigationControllerで遷移するような仕組みを作ればいいだけなので、作りやすいのです。 Using UIPageControl as a contain
Androidアプリで、カメラアプリから受け取った画像データをSDカードに保存することがあると思います。 それをあとから呼び出そうと思ったらぬるぽになってアプリが強制終了!なんて現象が発生することがあります。 それは、ギャラリーに画像が反映されておらず、読み取ろうとしたときに「画像がねえよ!」って怒られているわけです。 今回は、画像をSDカードに保存した後、明示的にデータをコンテンツプロバイダーに登録する方法を書きます。 //登録する枚数 int new_nums = (登録する画像の枚数); //配列をnew String[] paths = new String[new_nums]; String[] mimeTypes = new String[new_nums]; //画像のパスと形式を配列に格納 for (int i = 0; i <
新しいMacでiOSアプリをビルドするためには、証明書、秘密鍵、ビルドするアプリのmobileprovisionが必要です チーム内 チーム内の場合は簡単でdevloperprofileには秘密鍵と証明書が入ってるので、それを渡してmobileprovisionはアカウントのリストをRefreshするのが簡単です。 devloperprofile を渡す Xcode – organizerのLIBRARYとTEAMをRefresh する チーム外 チーム外の人にビルドしてもらい、ipaだけをもらうような場合は多少面倒です。 まずは、貰う先の人がそのアプリが対象となるmobileprovisionでビルドできる環境を作ってもらい、 devloperprofileを渡して貰うのが簡潔です。 devloperprofile はzipにすれば普通に開けるので中身を見てみると、 Organizerに
OCUnit系のTest Bundleを使ったテストをコマンドラインから実行する方法について簡潔に書いてみます。 (Xcode 4.6~) サンプルとして以下のプロジェクトをコマンドラインからテストしてみます。 azu/notify-changeLog · GitHub $ make test でテストが走るようにMakefileを書きます。 Makefileの中身はすごく単純で、以下のようになっています。 test: osascript -e 'tell app "iPhone Simulator" to quit' xcodebuild -workspace notify-changeLog.xcworkspace -scheme Tests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO TEST_AFTER_BUILD=YES clean buil
androidアプリの画面でよく見かけるのがこういう画面。 画面の下端に横一列に並ぶ、タブメニューボタン。 これは、背景となる元画像あって、その上から文字を重ねているわけですが、その元画像のサイズの縦横比を維持したままで、端末の横幅に合わせて拡大縮小させて並べる必要があります。 ↑のキャプチャ画面は、NexusSでアプリを開いた場合の画面で、↓のキャプチャはNexus7で開いた場合です。 androidは画面の解像度が多種多様なため、端末対応が大変です。レイアウトxmlを上手いこと設定しないと、画面が崩れて残念なことになってしまいます。 ちなみに、元画像は↓こんな感じです。 これと これです。 ・レイアウトを画面下部に固定する これは簡単です。 <?xml version="1.0&am
上記のように、FooViewControllerからBarViewControllerへ値を渡したい場合、 StoryBoardだと大きく分けて2つの方法があると思います。 prepareForSegue: にてsegue.destinationViewController(この場合はBarが入る)に値を設定する instantiateViewControllerWithIdentifier: でBarをインスタンス化し、値を設定する。 (移動は [self.navigationController pushViewController:barViewController animated:YES]; というように手動で書く) 1の方法、2の方法 どちらも値を文字列で指定しないと行けない部分が出てきてしまうのでとても嫌な感じがします。 azu/StoryBoardPassingData ·
つい先日、Androidアプリと弊社で取り組んでいるWEBサービスのデータベースとを連携させる処理を実装しました。 JSON形式のデータをAndroidアプリ側からPOSTして、サーバー側では受け取ったデータをもとに色々DBに保存するという仕組みです。 しかし、JSON形式のデータを生成する際に、ハッシュ値がHMAC-SHA256方式になったため、ちょっと手こずりました。 今回は、それの解説です。 まずは、メインのActivityの方でハッシュ生成用のクラスを作成しましょう。 //ハッシュ値にしたい文字列 String base_str = "hoge"; //ハッシュを生成する String hash = HmacMD5.get(base_str); import java.security.InvalidKeyException; import java.security.NoSuch
以前、似たような記事(最近使っていたiOSアプリ開発ツールやライブラリのまとめ | Technology-Gym)を書きましたが、 CocoaPodsを使い出してからライブラリの使い方が大分変わりました。 最近はCocoaPodsを使ってライブラリを管理するようにしているので、よく使うライブラリを簡単な紹介と一緒にまとめてみました。 そのままインストール出来るように、Podfileも一緒にレポジトリに入っています。 azu/Podfile · GitHub 細かい紹介は、上記をみてもらうとして、その中でもおすすめを書いておきます。 最初は、 MagicalRecord MagicalRecordのREADMEを意訳 – Object for cutie CoreData周りを管理するライブラリです。 2.0.xで色々ゴタゴタがありましたが(child contextのsave周り)、2.1
UISearchBarまとめ | SpiriteK Blog より iOSアプリの検索バーUIである、UISearchBarですがあまり機能的なカスタマイズは用意されていないようで、 横に表示できるボタンもCacelButtonだけとなっています。 UISearchBar Class Reference キャンセルだけではなく、入力した内容をそのまま使うなど、 補完と入力の両方を実現したい場合には、入力内容をそのまま使うボタンをCancelの位置におくようなUIが欲しくなると思います。 今回は、UISearchBarで補完候補を表示できる jcoleman/JCAutocompletingSearch · GitHub ライブラリのUISearchBarの見た目をカスタマイズしてみたいと思います。 サンプルのプロジェクトは azu/SearchBarCustomize · GitHub に
2012年のiOSアプリ開発の振り返り | Technology-GymでUIAppearanceが便利だということを書いていましたが、実際にナビゲーションバーにUIAppearanceを使った画像の適応例を見て行きたいと思います。 例えば、UIAppearanceを使えばナビゲーションバーの背景画像などを一括で指定することができますが、ナビゲーションバーといってもnavigationItem.promptを設定したりすると高さが変わったりします。 こういう場合に固定サイズの画像のままでは、背景画像を適応しにくいので、resizableImageWithCapInsetsを上手く使い解決していくサンプルです。 azu/AppearanceWithResizableImageWithCapInsets · GitHub 上記のような見た目にカスタマイズするために、ナビゲーションバーの背景やU
いつもmogeneratorを使ってCoreDataのモデルクラスを生成して利用している。 mogeneratorはPersonというNameのEntityがあった場合には、 Person.(h|m) _Person.(h|m) と4種類のファイルを生成する。 _Person.(h|m)には、基本的にいじる必要のない便利メソッドやモデルクラスっぽいプロパティ等が定義される。 Entityを更新等して再生成した時に上書きされるので、手動で変更する必要はない。 + (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_; + (NSString*)entityName; + (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)
2012年(主に後半の3-4ヶ月ぐらい)でのiOSアプリ開発についての振り返りの雑談をしたので、 その時のメモとなります。 UIAppearance Proxy -> デフォルトの色とかをプロキシ経由のものにする デフォルトの色や画像の適応 UIAPPEARANCESELECTORで自作のライブラリもUIAppearance対応可能 AHAlertView では実装されてる Cocoaの日々: UIAppearance で色や画像を変える UIAppearance によるタブカスタマイズ How To Customize UITabBar on iOS 5 – Felipe Cypriano UITabBarのデザインを変更する|blog|Penta creation idev-recipes/RaisedCenterTabBar at master · boctor/idev-recip
AndroidでWebビューアプリを作るのは、eclipseの環境と多少の知識があれば完成するので、Androidアプリ作成の練習にはうってつけです。 以下の解説は、「eclipseの環境設定」と「プロジェクトの新規作成」の手順を省いています。初心者の皆さんは、頑張ってググってそのあたりを終わらせた後、またこの記事にもどってきてください。 ○パーミッションの設定 まず必要なのが、アプリから外部にアクセスするため、AndroidManifest.xmlにINTERNET権限の設定を追記します。 これがないとネットへのアクセスができないので、忘れずに設定しましょう。 一番上の階層にあるAndroidManifest.xmlというファイル、これは、アプリ全体の設定を記入するファイルです。ここに、 <uses-permission android:name=”android.permission.
TableViewでDynamic PrototypesだけどStatic Cellsのように見た目をGUIで作成する方法 StoryBoard等ではUITableViewではコンテンツのタイプで”Dynamic Prototypes”と”Static Cells”が選べるようになっています(iOS5から) “Static Cells”はiOS5から使うことができ、名前の通りInterface builder(GUI)上でTableViewの見た目を作ることができます。 そのため、複数の入力UIを併せ持つような 設定画面 などでとても効果を発揮します。 設定の見た目をGUIで作って、後はUIViewControllerと同じようにoutletを結んで処理を書くだけで済むようになります。 今までの”Dynamic Prototypes”の方式ではコードで X section の Y rowは
Androidアプリを作っているとき、どうしてもアクティビティ間で変数をやりとりしたくなる場合があると思います。 それを実現するには、いくつか方法があります。 ・intent.putExtra()でインテントでやりとりする ・SQLiteとか使ってデータ保存する などで可能となりますが、この記事では、グローバル的に変数を扱ってどのActivityからでも共通の変数を参照する方法を解説します。 ①Applicationを継承したクラスをつくる このクラスの中で、共有する変数を宣言します。また、クラス内関数も同じように参照できるので、初期化関数なんかを入れておくと便利です。 import android.app.Application; public class Globals extends Application { //グローバルに使用する変数たち int hoge; St
iOSのUITableViewのAPIは結構よくできているので色々な事が行えます。 UITableViewの基本的な事は下記の記事を読むといいでしょう。 iOS Table View入門 #1 | クラスメソッド開発ブログ iOS Table View入門 #2 | クラスメソッド開発ブログ iOS Table View入門 #3 | クラスメソッド開発ブログ また、UITableViewで表示するUITableViewCell(セル)はデフォルトで幾つかスタイルを持っていて、 シンプルなデザインならばこのプリセットを利用すればわざわざカスタムセルを使わなくても問題ありません。 [iOS]UITableViewCellのプリセットビュー – l4l プリセットのデザインでは目的を達成できない場合は、UITableViewCellを継承したカスタムセルを作成することになります。 (UITab
次のページ
このページを最初にブックマークしてみませんか?
『Technology gym | 株式会社プラスアール所属 技術者による、技術情報ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く