しるてく

技術的な話をします

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

github.com

moment.js っぽく、時間まわりをアレコレできるやつ。 webのときはよく使ってたし、慣れた感じで書けて良さそう。

Layout

github.com

css-layoutswift実装でCSSでレイアウトできる。ステキ感ある。

github.com

AutoLayoutをシンプルに定義できるやつ。 SwiftAutoLayout ってやつもあるけど、そっちよりわかりやすそう。 Storyboardにどうしようもない恨みが溜まった時に利用したい(そうでなければできるだけStoryboardに集約させたいので見送り)。

Alert

どれが良いか悩み中。 どれも見た目をカスタマイズできないので、 MJPopupViewController とかで作るか、自作してしまうのがはやそう。

Other

github.com

「このswiftライブラリが凄い!」みたいなまとめ集。まだ全部見切れてないけど参考になりそう。

BigQuery メモ

BigQuery使いたくてちょっと調べたけど、ちゃんと使うのはもうちょっと後になりそうなので。参考になりそうなページだけぺろぺろ貼っておく。

www.buildinsider.net

すごい安いし、なんでもそこそこ高速なところが良いところ。

mysqlから突っ込むなら App::BigQuery::Importer::MySQL を使うのが良さそう。 とりあえず Quickstartbq Command-Line Tool を読んでおけば、大体分かる感じだ。

SlackでHubot Integrationを使わずにHubotを利用する

もしも、深淵な理由でIntegrationをユーザが追加できない場合にslackでhubotが使いたくなったら…。

というアレな状況だったので、hubot-slackのAdapterのmsg.as_user, msg.usernameを直接いじってゴリ押しした。 もしかしたらもっとスマートなやり方があるかもしれない。

github.com

自分が使いたかっただけなので、雑だけどやったこと。

  1. /src/slackをコピーして/src/slack_no_integrationを作成
  2. 自分の発言を無視しないようにした(hubot=自分になるので)
  3. 既読にしないようにした
  4. 名前を設定できるようにした
  5. 無視するチャンネルリストを取得できるようにした(hubotの参加チャンネル=自分の参加チャンネルになるので)

シェイクでのUndo, Redoをやめたい

UIApplication Class Reference

WebView+SPAだと、フォーム投稿後もシェイクしたときのUndo, Redoが出てきてしまって面倒な感じだったので無効化するの巻。

applicationSupportsShakeToEdit に NO を突っ込んであげればよさそう。

一部のAndroid端末でWebFontの代わりに絵文字が表示されてしまう問題

スマホサイトでWebFontの私用領域つかっていたら、一部のAndroid端末でWebFontの代わりに絵文字が表示されて困った。

DECOLOG TECH BLOG: スマートフォンブラウザの絵文字事情

ココらへんをさけるようにマッピングすれば良さそう。

絵文字を〓にする

MySQLでutf8mb4にしてなくて絵文字(4バイト文字)をDBに格納できない(その文字以降が突っ込まれない)問題があって、とりあえずjavascriptでアレな文字を〓に変換するやつ。

string.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '〓');