logo

セルを下から上に表示するUITableView

こんにちは。
開発の中山です。

UITableViewと言えばiOSにおけるUIの要ですが、このUITableViewで、セルを下から上に並べて表示する方法についてご紹介します。

そもそも下から上にセルを並べるというUIが一般的ではないということもあり、あいにくUITableViewにはそのようなAPIは用意されていません。かと言って自前で一から実装し直すのは、セルを再利用する仕組みなども考えると中々骨が折れそうです。

そこで今回は、UIViewのtransformプロパティというものを使います。これを使うと一見強引なビューの変形をすることができます。

では、実際にやってみましょう。
まず標準のテーブルビューです。

このテーブルビューのtransformプロパティに、180°回転させるCGAffineTransformをセットします。

- (void)viewDidLoad {
    [super viewDidLoad];
    _tableView.transform = CGAffineTransformMakeRotation(M_PI);
}

180°回転しましたが、セルの内容まで一緒に回転してしまっています。そこで、今度はセルを逆方向に回転させることでテーブルビューの回転を相殺させてみます。

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    static NSString* cellIdentifier = @"Cell";
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    cell.transform = CGAffineTransformMakeRotation(-M_PI);
    cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
    return cell;
}

見事に下から上にセルが並んでいます!と思いきや、実際に触ってスクロールしてみると、こんな風にスクロールバーが画面左側に表示されてしまいます。

そこで、今度はUIScrollViewのプロパティ、scrollIndicatorInsetsを変更してみます。scrollIndicatorInsetsは、スクロールバーをビューの端からどれだけ内側に表示するかというプロパティです。この場合、画面左側からビューの幅分だけググっと右側に押し込むとうまくいきそうです。ただし、テーブルビューは180°回転している状態なので、画面左から押し込むために変更する値はscrollIndicatorInsets.rightになることに注意して下さい。

- (void)viewDidLoad {
    [super viewDidLoad];

    _tableView.transform = CGAffineTransformMakeRotation(M_PI);

    static CGFloat innerOffset = 9.0;
    UIEdgeInsets insets = UIEdgeInsetsMake(
        0.0, // top
        0.0, // left
        0.0, // bottom
        CGRectGetWidth(_tableView.frame) - innerOffset // right
    );
    _tableView.scrollIndicatorInsets = insets;
}

うまくいきました。完成です。

ただ、tableHeaderViewは逆回転をしても画面下に表示されてしまったり、セクションヘッダのビューは逆回転できなかったりと、完全ではありません。完全な実装をするには一から再発明する必要がありそうです。

今回の方法を使った、透過的に使えるUITableViewとUITableViewCellのサブクラスのサンプルです。
ReversedTableViewSample

ピッチ変更機能付きボイスチェンジャー「Gender Changer」をリリースしました

自分の声のピッチを変更して、異性の声や他人の声に変更することができる iPhone アプリケーション「Gender Changer」をリリースしました。

昨年、歌手の声のピッチを変えると、別の歌手の声に聞こえるという情報が話題になりました。
(トリビアの泉やミュージックステーションなど)

例えば、次のようなものです。

  • Superfly の「愛をこめて花束を」の声のピッチを上げると、Every Little Thing の持田香織さんの声になる。
  • 木村カエラさんの「リルラ リルハ」 の声のピッチを下げると、南海キャンディーズのしずちゃんになる。
  • 中島みゆきさんの「地上の星」のピッチを下げると林家木久蔵さんの声になる。
  • 新垣結衣さんの「Heavenly Days」の声のピッチを下げると徳永英明さんの声になる。
  • 一青窈さんの「ハナミズキ」のピッチを下げると平井堅さんの声になる。

「Gender Changer」は録音した音声のピッチを変更して、保存・再生することができるので、上記のような変換を手軽に行うことができます。

あなたや周りの人の声のピッチを変えると、誰の声に似ているでしょう?カラオケやポッドキャストなどにもぜひご利用下さい。
機能一覧

  • 音声の録音・再生機能。(iPod touch は外付けのマイクが別途必要です。)
  • 音声の変換機能。
  • -「男性→女性」
  • -「女性→男性」
  • -「ピッチ変更」
  • -「エコーエフェクト」
  • 音声の保存。
  • 音声のダウンロード。(サーバー内蔵でウェブブラウザから音声をダウンロードできます。)
  • 録音品質の変更。(8kHz/16kHz/44.1kHz)

ご意見、ご要望などございましたら、レビューに書いて頂きますとバージョンアップ時の参考にさせて頂きますのでよろしくお願いします。

動画

この動画ではSuperfly の「愛をこめて花束を」のピッチを二つ上げています。

Every Little Thing の持田香織さんの歌声に聞こえますか?

必要条件

iPhone か iPod touch 2nd(iPod touch 2nd の場合は外付けマイクが必要です。)

購入方法 (iPhone & iPod touch)

価格:350円

発売記念セールで230円で販売中!

Buy now

関連動画(Youtube)

関連動画(ニコニコ動画

弊社開発のiPhone アプリケーション2つが発売されました!

弊社開発の iPhone アプリケーション「フォトパズル」と「写真でもぐらたたき」の2つがリリースされました。

*フォトパズル

パネル同士の衝突音や、加速度センサーによる傾き検知、マルチタッチの操作感など、アナログおもちゃの15パズルをできるだけ再現できるようにこだわりました。iPhone, iPod touch 対応で115円です。

詳細はこちらから確認できます。
http://labs.spookies.jp/iphone

*写真でもぐらたたき

※ 再撮影中

写真を使って、良いもぐら(叩いてはいけない)と悪いもぐら(叩く)を設定して遊ぶもぐらたたきです。自分の身近な人の顔を当てはめることによって、より楽しく遊ぶことができます。iPhone, iPod touch 対応で230円です。

詳細はこちらから確認できます。
http://labs.spookies.jp/iphone


Return to page top