iOSアプリ開発に関する情報を載せるサイトを立ち上げました。
現在は
小学生のためのiPhoneアプリ開発講座 | CAPH TECH : iOS
と
を連載中です。
iOSのAuto LayoutでVisual Formatを使ってサブビューのセンタリングを行うには以下のように記述する。
1 2 | [superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[superview]-(<=0)-[subview(length)]" options:NSLayoutFormatAlignAllCenterY metrics:NSDictionaryOfVariableBindings(length) views:NSDictionaryOfVariableBindings(superview, subview)]]; [superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[superview]-(<=0)-[subview(length)]" options:NSLayoutFormatAlignAllCenterX metrics:NSDictionaryOfVariableBindings(length) views:NSDictionaryOfVariableBindings(superview, subview)]]; |
上記コードではlengthを指定して正方形にレイアウトしているが、他で長さを指定していればlengthは指定しなくてもいい。
MacでSafariからTweetbotに現在表示しているページを送るSafari Extensionを公開しました。ツールバーにボタンが追加されます。
ソースコードも公開しています。
GitHub – rizumita/Safari2Tweetbot
iOSでフィードバックをメールで送信するライブラリ「CTFeedback」を作成・公開しました。iOS6.0以降で、MITライセンスです。
AAMFeedbackが更新されないので、似たようなのを自作しました。
1 2 3 | CTFeedbackViewController *feedbackViewController = [CTFeedbackViewController controllerWithTopics:CTFeedbackViewController.defaultTopics localizedTopics:CTFeedbackViewController.defaultLocalizedTopics]; feedbackViewController.toRecipients = @[@"ctfeedback@example.com"]; [self.navigationController pushViewController:feedbackViewController animated:YES]; |
上記のコードで
このような画面が表示されます。
独自のUINavigationControllerに載せてモーダルに表示しても利用することが可能です。
メールボタンをタップすると、入力した情報と基本情報が入力されているメール作成画面が表示されます。
トピックは独自に作成することが可能です。
CocoaPodsにもPull Requestを送っていますが、現状でもpodspecを提供しているのでPodfileで直接指定すればCocoaPodsでインストールすることができます。
iOS7ではUITableViewの背景色を変更してもCellの背景色は白のままになる。
Appleのドキュメントによると
UITableViewCell Class Reference: “Whether you use a predefined or custom cell, you can change the cell’s background using the backgroundView property or by changing the inherited backgroundColor property. In iOS 7, cells have a white background by default; in earlier versions of iOS, cells inherit the background color of the enclosing table view. If you want to change the background color of a cell, do so in the tableView:willDisplayCell:forRowAtIndexPath: method of your table view delegate.”
ということで、iOS7ではセルの背景色は白がデフォルトということなので、tableView:willDisplayCell:forRowAtIndexPath:メソッドでセルの背景色を変更してやることになる。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { cell.backgroundColor = [UIColor lightGrayColor]; } |
iOSでバージョンのチェックをいろいろ行いたかったので、便利なマクロを探してみた。Check iPhone iOS Version – Stack Overflowから。これを.pchファイルに記述すると便利。
/* * System Versioning Preprocessor Macros */ #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) /* * Usage */ if (SYSTEM_VERSION_LESS_THAN(@'4.0')) { ... } if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@'3.1.1')) { ... } |
MacにHomebrewでMongoDBをインストールした。
$ brew install mongodb $ ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist |
ScalaでAndroidアプリを作成するために準備をする。
HomebrewでScala/sbt/giter8をインストール。
$ brew install scala sbt giter8
giter8でテンプレートからファイルを作成。
$ g8 jberkel/android-app
package [my.android.project]: com.example.myproject
name [My Android Project]: My Project
main_activity [MainActivity]:
scala_version [2.9.2]:
api_level [10]: 14
useProguard [true]:
scalatest_version [1.8]:
みたいな感じで。
さらにIntelliJ IDEAのプロジェクトにする。
project/plugins.sbtに
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.4.0") |
を追加。addSbtPluginを複数記述する場合はaddSbtPlugin行間に空白行が必要。
$ sbt
> gen-idea
を実行。
> android:package-debug
> android:install-device
でビルドして実機に転送。
Mac Android開発環境構築。実機転送設定(Xperia Z) – develog.meを参考に行った。
HomebrewでSDKをインストールしたのでmanifest.iniを
/usr/local/opt/android-skd/add-ons/xperia-z/manifest.ini
として以下の内容で作成。
# SDK Add-on Manifest name=Sony Xperia z vendor=Sony description=Adds USB support for Xperia Z(Vendor id:0x054c) api=16 revision=1 usb-vendor=0x054c |
manifest.iniに関しては[Android] adb_usb.ini の正しい書き方 | tande lab.が詳しい。
$ android update adb
$ adb kill-server
$ adb start-server
「設定→セキュリティ→提供元不明のアプリ」をONに設定
「設定→開発者向けオプション→USBデバッグ」をONに設定
とし、実機をMacに接続。
$ adb devices
で確認。
IntelliJ IDEAを利用している。IntelliJ IDEAからデバッグを実行。
Android SDKをMacにインストールした。
すでにJavaがインストールされているとする。
$ brew install android-sdk
とHomebrewでインストール。
.bashrc等に
export ANDROID_SDK_ROOT=/usr/local/opt/android-sdk
を記述。
続いて
$ android &
とAndroid SDK Managerを起動して必要なパッケージを選択してインストール。