【Android】AttributeSetを使ってXMLだけで自作Viewに値をセットする

この前、Xcode6の新しい機能(IBInspectable)の機能を紹介して、ソースコードを書かずに値を設定する方法を紹介しました。 これをAndroidStudioでも同じことが出来るので紹介したいと思います。 クラスなどの紹介はまた別記事にするとして、こんな感じで実装できるよっていうのを紹介したいと思います。 サンプルの説明 サンプルはこちらのレポジトリに公開しています。 NinjaAdMax/SampleCustomViewAttr 簡単に紹介すると、円を描画するクラスを自作しました。 円を描画するのに x座標 y座標 半径 円の色 というのを簡単に設定出来るようにしました。 ではまずソースコードを紹介します。 ソースコード res/values/attr.xml1234567891011121314151617181920<?xml version="1.0" enco

【iOS】Info.plistから値を取得する方法

アプリの基本情報(アプリのバージョンや状態)が書かれているInfo.plistから値を取得する方法を紹介します。 例えば、APIと通信するアプリを作成するときにアプリのバージョンを一緒に送信したい場合があるかと思います。 アプリのバージョンごとに描画する内容が異なる場合などです。 その値を手動でバージョンアップごとに書き換えるとなるととってもめんどくさく、またリスクがあると思います。 そのような値を設定ファイル(Info.plist)から取得すればまず間違いは起きません。 また設定ファイル(Info.plist)に独自の値を設定することも出来ます。 設定ファイルを有効活用してソースコードを少しでも簡素化できるようにしましょう。 ということで取得方法を紹介します。 Info.plist 今回はXcodeでプロジェクトを作成したときのまんまのInfo.plistをサンプルとして使いたいと思いま

【iOS】AdMaxSDK iOS版 1.2.0 アップデートのお知らせ

先程AdMaxSDK(iOS)を1.1.0から1.2.0へバージョンアップしました。 今回のアップデートでXcode6とiOS8への対応、Swiftでの動作確認をしました。 Xcode6をお使いの場合はアップデートをお願いします。 リンクはコチラになります。 では、どこを改善したのかを説明していきます。 バージョンアップの内容 主に以下の項目になります。 Xcode6の対応 iOS8の対応 Swiftの対応 今回のバージョンアップしたSDKはXcode5に対応していません。 AdMaxSDKはXcode6でビルドされていれば、iOS7も対応されています。 その理由も含めて、一つずつ紹介していきます。 Xcode6への対応 中身はなにも変わっていません。 だたXcode6で新たに実装されたIBInspectableを使いました。 IBInspectableに関しては以下の記事を参考にして

【iOS】NSNotificationの使い方

Objective-CにはProtocolとDelegateやObserverなどメッセージのやりとりをする実装方法がありますが、それらと同じ位便利なNotificationを紹介します。 これを使えば、不特定多数(メッセージを送信する側は誰が受け取るが把握しないため)のオブジェクトに対して任意のメッセージを送る事が出来ます。 NSNotificationの使いどころ 僕は普段、Objective-Cにおいてメッセージのやりとりをするときに、ProtocolとDelegateを使います。 けど、今回作ったものの実装で、不特定多数のオブジェクトが同じ値を求めるときにいちいちDelegateを配列で保持するのもなと思っていました。 そこで使ったのがNSNotificationというやつです。 簡単な例を紹介します。 123456789- (void)viewDidLoad{ NSNotific

【iOS】BridgingHeaderの使い方と設定方法

以前記事の所々に出現していたBridgingHeaderについて紹介します。 書く書く詐欺はよくないので、知識がホットなうちに記事にして固めようという魂胆です。 BridgingHeaderについての簡単な紹介と使い方について書きます。 Bridging-Headerについて ご存知の通り、AppleさんはiOS8やXcodeとともにSwiftもリリースしました。 Beta版の頃からiOS界隈はSwiftに大盛り上がりしていました。 あの長ったらしいメソッド名を書かなくてすむとかスクリプト言語っぽいとか(ちなみに僕はScalaちっくだなって思いました。)。 しかし、世に出ているライブラリのほとんどはまだObjective-Cで作られているのが現状です。 なのでSwiftでもObjective-C製のライブラリを使いたいとか、ここはObjective-Cで書きたいとかという問題の解決策がBr

【iOS】IBInspectableを使って自作Viewの値を設定しやすくする

Xcode6から新たに導入されたIBInspectableというのを使って、コードを一切書かずに値を設定できるようにする方法を紹介します。 自作Viewを作っている人には嬉しいことだと思います。 なにより、ソースコードを書かなくてよくなりますからね。 ちなみにXcode6の新機能ですが、Objective-CでもSwiftでも使えます。 とっても簡単に導入できるので、ぜひ使ってみてください。 SwiftでIBInspectableを使う まだSwiftを使って、自作Viewを作る人はいないのかな。 まずはソースコードになります。 NACustomSwift.swift1234567import UIKitclass NACustomViewSwift: UIView { @IBInspectable var string: String = "HOGE"; @IBInspect

【iOS】文字列の高さを取得する方法

iOSのアプリ開発でUITableViewを使って一覧表示をすることがあると思います。 その時に、一つ一つのUITableViewCellの大きさを動的に変える必要があって、いちいち計算するロジックをUITableViewDelegateの- (CGFloat)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathで書いちゃうのはなんとなく汚くていやなので、僕はいつもNSStringのCategoryを作って簡単に必要なCGSizeなりCGRectを返すメソッドを実装して使っていました。 そんなことをSwiftでもやろうと思い、やってみたときにちょっとつまずいて解決したので、その解決方法を紹介します。 Objective-CでいうのCategoryはSwiftだとextension

【iOS】時間を指定して処理をする場合はNSTimerを使う

iOSのアプリを作っている時に定期的にメソッドを実行したい場合があると思います。 例えば、 ある画面に何分以上いたら「シェアしてよ」のアラートを出す ある一定時間同じ画面にいたら画面描画を変える などの場合です。 そんな時はNSTimerを使うとより簡潔に書けます。 ということでNSTimerの紹介をします。 NSTimer You use the NSTimer class to create timer objects or, more simply, timers. A timer waits until a certain time interval has elapsed and then fires, sending a specified message to a target object. For example, you could create an NSTi

【Android】Viewの幅と高さを正確に取得する

AndroidでViewの幅と高さを取得するのには一工夫が必要です。 例えばレイアウトファイルで 1234<View android:layout_width="match_parent" android:layout_height="wrap_content" /> のように相対的に決めるパラメータを組まれるとonCreate時にview.getWidth()などではすぐに取得できません。 なので、Viewのレンダリング(描画)が終了した時点で正確な値を取得したいと考えるかと思います。 そんな時の手段を紹介します。 使うクラスはViewTreeObserverとViewTreeObserver.OnBlogalLayoutListenerです。 ViewTreeObserver A view tree observer is used to register li

【iOS】位置情報の取得方法

Androidでの位置情報の取得方法を紹介したので、合わせてiOSでの位置情報の取得方法も紹介します。 両方使ってみて、iOSの方が簡単かなという印象がありました。 では使用方法を書いていきます。 CoreLocation.frameworkの追加 iOSで位置情報を取得、使用するためにはCoreLocation.frameworkを使用します。 以前、ライブラリの追加方法の記事を書いたので、これを参考にCoreLocation.frameworkを追加してください。 【Xcode】ライブラリの追加方法 ソースコード Androidと同じ流れでまずはソースコードを紹介してから解説していきます。 CLLocationManager 以下のところでCLLocationManagerを生成しています。 12345678- (void)getCurrentLocation{ self