UICollectionViewでCellを長押ししたい
UILongPressGestureRecognizer を都度生成するの効率悪いのでViewDidLoadで一度だけ生成して、タップ後にどのCellを押したか判定する感じにする
override func viewDidLoad() { super.viewDidLoad() let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "onLongPressAction:") longPressRecognizer.allowableMovement = 10 longPressRecognizer.minimumPressDuration = 0.5 self.collectionView.addGestureRecognizer(longPressRecognizer) }
func onLongPressAction(sender: UILongPressGestureRecognizer) { let point: CGPoint = sender.locationInView(self.collectionView) let indexPath = self.collectionView.indexPathForItemAtPoint(point) if let indexPath = indexPath { switch sender.state { case .Began: // 例えばTimerをstartさせる case .Ended: // 例えばTimerをstopさせる default: break } }
AutoLayout で UIButton の image が拡大しない
UIButtonをautolayoutで配置して、画面サイズにあわせて拡縮するようにすると、UIButton自体は拡大するんだけど、そこに設定しているimage画像(UIButtonと同じサイズ、同じアスペクト比)が拡大してくれなくて困ったマン。
Alignmentをこうやればちゃんと拡大してくれるぽい。
iOS でカスタムフォントを使いたいけどなぜか表示されないとき
の通りにやったつもりだけど、なんか実機にインストールすると表示されなかった。
- フォント追加してる? -> OK
- info.plist > Fonts provided by application に追加されてる? -> NG
- Copy Budle Resourcesに追加されてる? -> NG
な感じだったので、良くわからないけど、Target > Build Phases > Copy Bundle Resources に手動で追加したフォントを入れてあげたら大丈夫になった。
storyboard で UILabel を袋文字にする
袋文字を使いたい病になった。
UIStrokeLabelみたいな感じでクラス作っておく。
import Foundation import UIKit @IBDesignable class UIDecorationLabel: UILabel { @IBInspectable var strokeSize: CGFloat = 0 @IBInspectable var strokeColor: UIColor = UIColor.clearColor() override func drawTextInRect(rect: CGRect) { // stroke let cr = UIGraphicsGetCurrentContext() let textColor = self.textColor CGContextSetLineWidth(cr, self.strokeSize) CGContextSetLineJoin(cr, kCGLineJoinRound) CGContextSetTextDrawingMode(cr, kCGTextStroke) self.textColor = self.strokeColor super.drawTextInRect(rect) CGContextSetTextDrawingMode(cr, kCGTextFill) self.textColor = textColor super.drawTextInRect(rect) } }
あとはUILabelのクラスに上のやつ設定して、適当に値を突っ込んであげればOK
最近気になっているswiftのLibraryのメモ
最近swift書いててなんかいいライブラリないかなって調べてるとブラウザのタブがすごいことになるので、今開いている(良さそうと思ってる)やつをメモっておく。
Util
moment.js っぽく、時間まわりをアレコレできるやつ。 webのときはよく使ってたし、慣れた感じで書けて良さそう。
Layout
css-layout のswift実装でCSSでレイアウトできる。ステキ感ある。
AutoLayoutをシンプルに定義できるやつ。 SwiftAutoLayout ってやつもあるけど、そっちよりわかりやすそう。 Storyboardにどうしようもない恨みが溜まった時に利用したい(そうでなければできるだけStoryboardに集約させたいので見送り)。
Alert
- codestergit/SweetAlert-iOS · GitHub
- vikmeup/SCLAlertView-Swift · GitHub
- Sumi-Interactive/SIAlertView · GitHub
どれが良いか悩み中。 どれも見た目をカスタマイズできないので、 MJPopupViewController とかで作るか、自作してしまうのがはやそう。
Other
「このswiftライブラリが凄い!」みたいなまとめ集。まだ全部見切れてないけど参考になりそう。
BigQuery メモ
BigQuery使いたくてちょっと調べたけど、ちゃんと使うのはもうちょっと後になりそうなので。参考になりそうなページだけぺろぺろ貼っておく。
すごい安いし、なんでもそこそこ高速なところが良いところ。
mysqlから突っ込むなら App::BigQuery::Importer::MySQL を使うのが良さそう。 とりあえず Quickstart と bq Command-Line Tool を読んでおけば、大体分かる感じだ。
SlackでHubot Integrationを使わずにHubotを利用する
もしも、深淵な理由でIntegrationをユーザが追加できない場合にslackでhubotが使いたくなったら…。
というアレな状況だったので、hubot-slackのAdapterのmsg.as_user, msg.usernameを直接いじってゴリ押しした。 もしかしたらもっとスマートなやり方があるかもしれない。
自分が使いたかっただけなので、雑だけどやったこと。
- /src/slackをコピーして/src/slack_no_integrationを作成
- 自分の発言を無視しないようにした(hubot=自分になるので)
- 既読にしないようにした
- 名前を設定できるようにした
- 無視するチャンネルリストを取得できるようにした(hubotの参加チャンネル=自分の参加チャンネルになるので)