もちゅろぐ

iOSやSwift、モバイル設計だったりRailsについてまとめていく

iOS

画面外へスライドアニメすると表示が消えてからスライドするのはSafeAreaが原因

問題の症状 下のアニメのように外へスライドしようとすると最初に白くなってから上へスライドします。 画面外へスライドアニメで表示が消える コードは下記のように至ってシンプル。 UIView.animate(withDuration: 0.3, animations: { [weak self] in guard …

XcodeのPlaygroundが動かないとか遅いとか不安定な場合は新しく作り直すといい

過去に作ったPlaygroundのままだと動作が変だよって話。 自分もだいぶ前に作ったPlaygroundをちょっとしたコード動かしたい時にXcodeプロジェクトが立ち上がった状態 Playground を立ち上げてコード書いてた。 だけど以前から Playgroundがずっと何かを処理…

Optional<String>をExtension化したのにエラーになって役に立たない

事の発端 nil結合演算子はコンパイルが重くなる要因だし、見た目としてもよくないから解決したいと考えてた。 そこで Optional を拡張してそのコードを次のようにカプセル化した。 これなら nil結合演算子も使わずにコード量も抑えられる。 extension Option…

App Store へのアップロードでThere was an error sending data to the iTunes Store. Scheduling restart shortly が出たとき自分はこれで解決した

iOS

いつもと同じ手順でXcodeのOrganizerでApp Storeへアップロードしたら次のエラーが出ました。 There was an error sending data to the iTunes Store. Scheduling restart shortly... 考えてみた所いくつか前回と異なる点がありました。 いつもと違うところ …

UITableViewで一番下までスクロールする方法

概要 UITableViewで一番下のセルまでスクロールする方法についてまとめました。 実装方法 UITableView#scrollToRow(at:at:animated)を使います。 第一引数のIndexPathにはrowとsectionを指定します。 この時にデータ配列から一番最後を指定することで一番下…

UITableViewのセルの高さを動的に変更する

iOSのUITableViewのセルの高さを内容に応じて動的に変更する方法についてまとめました。UITableView.rowHeightにUITableViewAutomaticDimensionを設定するのと、Auto Layoutで縦軸が自動算出できるようにすることがキモになります。

UITableViewの空セルの線(separator)を消す実装

UITableViewの空セルの線(separator)を消す 概要 iOSで使われるUIベスト3に入るUITableView そんなUITableViewですがデザイナーからよく指摘される空セルには線(separator)を引かないで消す実装についてまとめました。 実装方法 UITableView.tableFooterView…

UITableViewに引っ張る更新Pull to Refreshを実装する

UITableViewに引っ張って更新する機能(Pull to Refresh)の実装についてまとめました。UIRefreshControlを使うことで簡単に実装できます。

UITableViewのセル間をてっとり早く空ける方法

こんな感じ Cellに1枚色付きViewを追加している。 このViewは上下依存しないようにする あとはセルの高さをこのCellの高さ+空けたい長さを入れるとできる。 注意点 見た目が隙間空いてる様に見えるだけで、セルを複数選択すればバレる。 通常だとセル数の…

背景色をグラデーション

UIViewにはCALayerといったレイヤー機能を持っているので、このレイヤーにグラデーション用レイヤーを追加します。 なおグラデーションレイヤーを使うには QuartzCore フレームワークの追加とヘッダーのインポートを忘れずに。 // 背景色を初期化 CAGradient…

UITableViewCellのカスタムViewでNibを使う

UITableViewCellをInterfaceBuilderで作成したレイアウトを使用する。 if(cell==nil){ // Cell作成 // カスタムViewでUINibを使う UINib* nib = [UINib nibWithNibName:CUSTOM_CELL_NIB bundle:nil]; NSArray* array = [nib instantiateWithOwner:nil option…

日時の差を求める

NSDateComponents を使って「ある日」と「とある日」の差を算出します。 NSDate* date1 = ある日; NSDate* date2 = とある日; NSCalendar* calendar = [NSCalendar currentCalendar]; NSUInteger flags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinute…

NSDateComponents.dateでnilが返される

NSDateComponentsでNSDate形式が欲しい時にdateがあるので使おうとしたところnilが帰ってきた時のメモ NSDateComponents* dc = [[NSDateComponents alloc] init]; [dc setCalendar:[NSCalendar currentCalendar]]; 予めカレンダーをセットすればよさげ