iOS
iOSに関するプログラミングTip などをまとめます.
記事の中には英語になっているものもあります(Several posts are English)
Swift Memo is here
Other Objective-C mac development is here
UIに関するもの
- iPadかどうかをコードで検出
- Retinaディスプレイかどうかを検出する
- 処理中を示すビューをつくる(iOS)
- UIView アニメーション
- ViewDeck パフォーマンス改善(非公開)
- ViewDeck(Storyboardで利用する)
- iOS 画面遷移
- UIActivityIndicatorViewを使う
- iOS 円や, 角丸View をつくる
- UIRefreshControlを使う(iOS6)
- UITableViewスクロール位置を変更
- iOS(Status Bar)を非表示にする
- UIAlertView(ダイアログ)
- UIScrollViewとAutoLayout
- xibを使ってUI作成
- Drag and Drop iOS(English)
- Edge Pan(English)
- UICollectionView(Basics)(English)
- UIPopoverController(Basics)(English)
- Add constraints programmatically(English)
- addChildViewController(English)
- UIView key frame animation(English)
- Detect orientation(English)
- Detect Orientation 2
- UIViewController UINavigationController rotation fix(English)
- UIView Gesture
- Alignment UIButton Text
- iOS CustomDialog
- iOS Badge(Custom)
- Get NSString UI Size
- iOS How to hide keyboard
- iOS mainthread
- iOS Get TopView
- Prevent conflict GestureEvent
- UIViewController in AppDelegate
- UITableView with Drag and Drop
- UIFont from UIFontDescriptor
- UINavigationController etc
- Direction limitation of UIPanGestureRecognizer
Objective-Cに関するもの
- iOS時間計測ログをつくる
- ロケールを取得する
- NSUserDefaultsで簡単な永続化データをつくる
- NSErrorを表示する
- init(コンストラクタ)のオーバーライド
- classの判別, 継承の判別
- NSString int(long) 変換
- NSFileManager ファイルに関する操作
- NSString 文字列の操作(編集中)
- AppDelegateを取得する
- instancetypeでパラメータつきコンストラクタ
- Categoryでクラスを拡張する
- UUIDの生成
- iOSでの時間を制する(NSDate, NSDateComponents)
- Notification(NSNotificationCenter)
- iOS時間を文字列にする
- iOS日付に関する操作
- NSString NSData
- NSOperationを使用したバックグラウンド処理
- dispatch_asyncでバックグラウンドタスク
- Block Coding基本
- ObjectiveCからC++
- iOS Exception
- NSError NSURLError
Objective-Cに関する話題は, Mac Devel(英語)でも紹介しています。
Graphics
- CGRect, CGPoint, CGSize
- CoreGraphics 基礎
- CoreGraphics 図形を描画する
- CoreGraphics 図形を描画する 線, 曲線
- CoreGraphics CGRectからサイズを取得
- CoreGraphics アンチエイリアシング
- ベジエ曲線(UIBezierPath)
- CoreGraphics 線のパラメータ
- CoreGraphics テキスト描画
- CoreGraphics 画像の描画
- CoreGraphics グラデーション
- CoreGraphics Contextの保存と復帰
- CoreGraphics ドロップシャドウ
- CoreGraphics 透明レイヤー(物体を同一レイヤーに配置)
- UIView 再描画
- CoreGraphics アフィン変換(平行移動,回転, 拡大縮小)
- 星形を描く
- UIColor(編集中)
- カードをめくるAnimation(CATransform3D)(非公開)
- UIImage Animation
- Create hole in UIView
- Gloss hole in UIView
- Get status bar height from code
iOSに関するもの
- iOS Fileの置き場所
- iOS BigEndian, LittleEndian
- iOSローカライズ
- iOSローカライズ(アプリ名)
- iOS7 microphone Permission
- iOS Versionの取得
- iOS In App Purchase(Observer)
- iOS In App Purchase(リクエスト)
- NSData+Random(非公開)
- iOSアプケーション名を取得する
- How to detect Emulator
- iOS7 Review App(English)
- iOS open safari
- iOS prevent files from being backed up
- iOS Delegate
- iOS Calculate statusbar
- iOS Memory Warning in UIViewController
- iOS8 Tips
- UINavigationController swipe back
- iOS SocialFramework API
- iPhone 6 plus Optimization
Advanced
Core Audio
- iOS 音声再生(AVAudioPlayer)
- iOS 音声録音(AVAudioRecorder)
- NSError, OSStatus用のログをつくる
- byte -> short -> byte そしてfloat(Objective-C)
- Audio Unitを使おう
- wavファイルを読み込む(short)
Core Data
- Core Data(マルチスレッドの処理 )
- Core Data Prepare(English)
- Core Data(File xcdatamodeld)(English)
- Core Data(Data Access Object)(English)
- AppDelegate with NSManagedObjectContext
- Magical Record First Step
- Magical Record DAO
- Core Data(Add new table)
ネットワーク•Web
- iOSファイルのアップロード
- iOS(ネットワークの接続状態の検出)
- iOSでjson
- NSURL(編集中)
- iOSネットワークリクエスト(同期)
- iOSネットワークリクエスト(非同期簡易版)
- iOSネットワークリクエスト(非同期)
- iOS XMLパース
- iOS HTML Parse
- iOS Web Page(Basics)(English)
- iOS Web Page Local(English)
- UIWebView + JavaScript(English)
- iOS URL Encode Decode
- UIWebView + JavaScript2
- iOS Get IP address
- UIWebView Tips
- iOS WKWebView, UIWebView hybrid
- iOS WKWebView Tips
- WKWebView Screenshots
- WKWebView Prompt
- iOS WKWebView Javascript
- iOS Network level emulation
- iOS WebView TestPage
メディア
Game
- Sprite Kit
- SKView Transtion
- Infinite Scroll View
- TextureAtlas
- Blink in Sprite Kit
- Pause Game
- Game Pad(No Disclosure)
- Sprite Kit Game Tips
- Swipe in SpriteKit
- PanGesture in Sprite Kit
- Collision in Sprite Kit
デザインパターン, アルゴリズム
Test
その他の話題
- How to resize iOS emulator display size
- iOS Admob(導入編)
- iOS Admob(表示されなかった場合の処理)
- appledocでプロジェクトのドキュメントをつくる
- iOS Push Notification Client
- iOS Device Display
- iOS Simulator Tips
- iOS App Reject List
- iOS tools
- cocoas pods
ライブラリ
Webで見つけた, すばらしいライブラリを紹介
- ネットワークライブラリ(ASIHTTPRequest)
- ViewDeck
- zipzap
- SVProgressHUD
- InAppSettingKit
- OpenEars
- DSP
- MKNetworkKit
- Custom iOS7 AlertView
- DateKit
すばらしくはないのですが, 私が作ったライブラリです. 時間操作に関するものをいくつかまとめてみました
参考くらいにはなるかと思います - MagicalRecord
- TextDatePicker
UIDatePickerが大きくて邪魔なので, テキストフィールドをたたいたときにだけ表示させるUIをつくってみました - NJKWebViewProgress
ネットワークに関するライブラリ, 使い方も簡単 でも, Non-ARC。直そうと試みたけど複雑すぎて途中でGive up。
Facebookメニューのようなスライディングメニューを実装している
Zipを扱うライブラリ, 圧縮解凍をサポート。Mac用,iOS用どちらもある(両方試してみましたが問題なし)。Entryベースで操作ができるところがいい。
処理のプログレス状態を表示するUIのライブラリ, 導入が簡単なのがいい。処理の時間が不定な場合のloading iconとかの代わりにつかえばよいのでは。
アプリの設定などを自動的に作ってくれる。ライブラリ設定の項目はすべてplistでタイトルは, stringsに書く。UITableViewControllerに紐づいているので, 自前のUITableViewを使うとなると, かなりコードを書きなおす必要がある(やってみたけど結構面倒だった, カスタムの設定とかもつくってみたりもした)。
設定項目を書き込むところは, NSUserDefaultもしくは, ファイル。CoreDataを使うにはやっぱり自分で書くしかない。
iOS用の音声認識,ディクテーションのライブラリ。
元ネタは, CMU Sphinxというカーネギーメロン大学で開発されたオープンソースですOpenEarsはそれをラップしています。
パフォーマンス的にはいまいちなのできちんと使おうと思うと, 改造が必要です(結構改造しました), もしくは有料ライブラリを購入したりします
iOSではないのですが, 音声のPitchコントローラがC++で実装されています。Macや, iOSに簡単に組み込めます。
パラメータを調整したりして遊んでみました
ネットワークキット, かなりの機能を実装している, ASIHTTPRequestやAFNetworkingの影響を受けているらしい
ARC対応, ライトウェイトが売り インストラクションが制作者のブログ(English)にあります.
UIAlertViewを擬似的に実装したもの, UIViewを使って, それらしいUIに仕上げている.
UIAlertViewよりも柔軟なカスタムUIがつくれるはずだ. そのまま使うには難しいが実装コードはかなり参考になる
コードを読むだけでも価値あり
CoreDataを扱うためのライブラリ, contextとか接続部分, DAOなどを簡単にかける. RubyのActive Recordの設計を踏襲しているみたい
UIWebViewには,プログレスの表示などがありません. それを実現するために作られたライブラリ
- PhysicsDebugger
- Touchpose
- Punycode-Cocoa
PhysicsDebuggerは, SPrite Kitで, 物理演算を適用しているノードに印をつけるデバッグ用のライブラリです
Touchpose は,アプリのタッチ位置に色(波紋)を付けてくれます。組み込みは簡単です。製品ではなくデモ用っぽいです。
日本語ドメインを NSURLにするために利用させて頂きました。NSStringのカテゴリとして実装してあります
Xcode
Xcodeに関する話題は, Mac Devel(英語)でも紹介しています。
開発について気づいたことTips
Sample(サンプル)
3rd Party SDK
- Apptimize
ABテストを実施できるSDK. コードレスで,(Web上で) UIの色や画像の変更, およびターゲットを指定できる.
実装側は, Frameworkを入れて, info-plistにキーを入れるだけでO.K.
コードのABテストも実装できるWeb上でコードを書いてタグをつける, タグコードをアプリにも入れる
ツールなど
- PaintCode
- appledoc
- Average App Store Review Times
PaintCodeは, 画像をCoreGraphicsのコードにかえてくれるらしい。その逆も可能?
AppleDocは, Appleの開発者ドキュメントのようなスタイルのドキュメントをXCodeのプロジェクトを指定して
まるごとドキュメントをつくってくれるツール, githubなので元ソースもあります。
Average App Store Review Timesは, Apple Reviewにかかった時間をユーザーから投稿してもらうことで平均時間を割り出して提示してくれます。アプリの審査にかかる時間の目安になります。