[Swift] UIButtonのタップエリアを広くする

画像を表示させたUIButtonの画像の表示サイズはそのままでタップを検知する範囲を広げたい

btnという横幅40px,縦幅40pxのボタンがあったとする。

var frame = CGRectMake(0,0,40,40)
var btn = UIButton(frame: frame)

このbtnのタップを検知する範囲を横幅60px,縦幅60pxに拡大する。


// mul: 拡大倍率
let mul:CGFloat = 60/40.0

var image = UIImage(named: "hoge.png")
btn.setImage(image, forState: UIControlState.Normal)
// btnの画像を真ん中に配置する。
btn.imageView?.contentMode = UIViewContentMode.Center

// 横幅、縦幅をスケーリングさせる。
btn.frame = CGRectMake(frame.origin.x,frame.origin.y,frame.size.width * mul, frame.size.height * 1.5)

ModalViewControllerをNavigationBar付きで表示させる

新しくUINavigationControllerを作成するのが肝。
let storyboard = UIStoryboard(name: "Storyboardの名前", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("ViewControllerのIdentifier") as UIViewController

let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)

腰痛持ちがマニフレックスのマットレスを1ヶ月使ってみた感想

最初に

自分は趣味でダンスを5年前ほどしているのですが、その影響と職業柄ずっと椅子に座っている影響で腰痛を患っております。

最近は腰痛が悪化してきて、腰が痛すぎて眠れなかったり、睡眠が浅くなっていたのでこのままではまずいと思ってマットレスを購入することにしました。

マットレスの検討

予算40,000¥程度で自宅のマットレスを腰痛にやさしい高反発のマットレスを購入しようとネットで様々な口コミを調べてみたところ、最近TVCMで話題の エアウィーヴライト シングルマニフレックス メッシュ・ウィング が候補に上がりましたが、マニフレックス社のマットレスはへたりにくい一方で、エアウィーブの方は一年程度の使用で効果が薄れるとの口コミをちらほら見かけましたので耐久性の面からマニフレックスのマットレスを購入することに決めました。

第一印象

初めてマニフレックスのマットレスに寝た時の印象ですが腰の部分が他の部分よりも少し浮いていて、また高反発だからすごく硬いのかなと思いましたが全然そんなことはなく、体がまるで雲の上にいるかのように支えられている感じがして、腰の部分の沈み込みが全くありません。

こんなにも普段使っていたマットレスと違うのか!と感動しました。

1ヶ月使用してみた感想

一ヶ月使用してみた感想ですが、以前よりも早く眠りにつけるようになり深く眠れるようになり、より短い睡眠(1時間程度)ですっきりと起きれるようになりました。

腰が痛くて眠れないということや睡眠中に腰が痛くて何度も目が覚めたりすることはなくなり、起きた直後に感じる腰のだるさもかなり軽減されました。

最後に

腰痛で悩んでいる方には少し値段は高いですがそれ以上の価値がありますのでマニフレックスのマットレスを購入、または販売代理店に行って試しに寝てみることをオススメします。

Djangoで高速にDBからデータを削除する

DBから取得したデータはfor文とかif文を使って加工とかしたりせずにORMの用意されているクエリを使わないとダメだということとを痛感した。

Slow Performance

objects = YourModel.objects.filter(name = "foo").all()
for object in objects:
    object.delete()

Fast Performance

YourModel.objects.filter(name = "foo").delete()

感想

気をつけてコーディングしていきたい。

pytzを使ってタイムゾーン周りの処理を行ってみる

pytzを使うと複数のタイムゾーンにまたがった日付周りの処理を直感的に処理できます。

pytzの使いかた

pytzでよく使う例を列挙しておきます。

UTCの時間を取得

from datetime import datetime
# タイムゾーンをUTC指定して現在の日付を取得する。
now = datetime.now(pytz.utc)
# datetime.datetime(2014, 12, 25, 2, 13, 22, 490534, tzinfo = < UTC >)

日本の時間を取得

import pytz
from datetime import datetime
datetime.now(pytz.timezone('Asia/Tokyo')
# datetime.datetime(2015, 1, 2, 10, 43, 49, 364798, tzinfo=)

UTC時間を日本時間、日本時間をUTC時間に変換する

from datetime import datetime 
now = datetime.now()
tz_japan = pytz.timezone('Asia/Tokyo')

# UTC時間を日本時間に変換する
local_now = now.astimezone('Asia/Tokyo')

# 日本時間をUTC時間に変換する
utc = local_now.astimezone('Asia/Tokyo')