ObjC, Pods, ストレッチするヘッダー付きの横スワイプ可能なタブビュー: AXStretchableHeaderTabViewController

AXStretchableHeaderTabViewControllerという名前の、ヘッダーがぐにょぐにょ高さ可変で、横スワイプで移動できるタブビューがセットになっているライブラリをCocoapodsに登録しました。異常に長い名前のライブラリになってしまいました。
以下の特徴があります。

  • ヘッダーのビューがストレッチする
  • タブビュー
  • タブビュー内のビュー間を横スワイプで移動できる

Stretchable Header View

Stretchable - AXStretchableHeaderTabViewController

Horizontal Swipable Tab View

Swipable - AXStretchableHeaderTabViewController

UITableViewCellの横線を消す

iOS7からUITableViewCellの下部に水平線が追加されているが、デザイン上邪魔になることがある。この罫線を消す方法。UITableViewCellを継承して、layoutSubviews内で幅を調整すればよい。

- (void)layoutSubviews
{
  [super layoutSubviews];
  [self setSeparatorInset:UIEdgeInsetsMake(0.0, CGRectGetWidth(self.bounds), 0.0, 0.0)];
}

middlemanのFrontmatterで変数を使う

Frontmatterで呼び出し元のテンプレートに変数を渡すことができる。

layout.haml
!!!
%html
  %head
    %meta(charset="utf-8")
    %title= current_page.data.title
%body
  = yield
index.html.haml
---
title: akiroom.com
---

%p something.

この時、index.htmlにアクセスすると、titleタグの中身は「akiroom.com」になっている。
この変数にさらに「title: #{hoge_var}」というような感じでさらに変数を呼び出したいと思った。
その時どうすればいいか。

続きを読む middlemanのFrontmatterで変数を使う

AXRatingViewをアップデート(64bit対応など)

AXRatingViewを0.9.4から0.9.5にアップデートしました。
関連: 星でレーティングするAXRatingViewをつくった
CocoaPodsに対応しているので以下をPodfileに書けば動きます。

pod 'AXRatingView', '~> 0.9.5'

AXRatingView0.9.5

アップデート内容は以下の通り。
続きを読む AXRatingViewをアップデート(64bit対応など)

MKMapViewを3D表示する

代官山上空200mから渋谷駅を望む

[MKMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]を使うことで、どの地点からどの地点に向かって上空何メートルからの視点で見下ろすかを定義できる。その後、MKMapViewのcameraとshowsBuildingsプロパティを設定することで、ビルを3D表示させることができる。iOSシミュレーターでは立体表示にならないので注意。

  // Shibuya Sta.
  CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(35.658517, 139.701334);
  
  // Daikanyama Sta.
  CLLocationCoordinate2D fromEyeCoordinate = CLLocationCoordinate2DMake(35.648104, 139.703168);
  
  // 200 meter
  CLLocationDistance eyeAltitude = 200.0;
  
  MKMapCamera *camera = [MKMapCamera cameraLookingAtCenterCoordinate:centerCoordinate
                                                   fromEyeCoordinate:fromEyeCoordinate
                                                         eyeAltitude:eyeAltitude];
  [self.mapView setCamera:camera];
  [self.mapView setShowsBuildings:YES];