xcode8.3.x アプリアイコンの登録を簡略化
アプリを新規に追加するときなどに都度都度、手作業で 入れ込んでいたIconファイルですが、年々増えていくだけでなく そのわかりにくさも半端じゃないので、簡略化してしまうことに しました。
macOSに標準でついている sips コマンドを使ってベースのアイコンをリサイズして、xcodeのAssetsにjson形式で記述してやることで、簡略化します。
■ 手順
1. ベースのアイコンファイルを準備 2. sipsでリサイズ 3. AssetsのContens.json書き換え
■ 詳細
1. ベースのアイコンファイルを準備
昔は透過のPNGとかが流行りでしたが近年は塗りが基本なので 1024px x 1024px 以上の正方形で背景が透明ではないベースアイコンを用意します。
2. sipsでリサイズ
用意したベースアイコン(名前はIcon.png)を特定のフォルダに入れて以下のコマンドを投入します。
sips -Z 40 Icon.png --out Icon-20@2x.png sips -Z 40 Icon.png --out Icon-20@2x-1.png sips -Z 40 Icon.png --out Icon-40@.png sips -Z 60 Icon.png --out Icon-60@.png sips -Z 58 Icon.png --out Icon-29@2x.png sips -Z 58 Icon.png --out Icon-29@2x-1.png sips -Z 87 Icon.png --out Icon-29@3x.png sips -Z 80 Icon.png --out Icon-40@2x.png sips -Z 80 Icon.png --out Icon-40@2x-1.png sips -Z 120 Icon.png --out Icon-40@3x.png sips -Z 120 Icon.png --out Icon-60@2x.png sips -Z 180 Icon.png --out Icon-60@3x.png sips -Z 20 Icon.png --out Icon-20@.png sips -Z 29 Icon.png --out Icon-29@.png sips -Z 76 Icon.png --out Icon-76@.png sips -Z 152 Icon.png --out Icon-76@2x.png sips -Z 167 Icon.png --out Icon-83_5@2x.png
ここで、同じサイズ(たとえば 40px x 40px は 20px の x2があるからいいか。。と思っていたのですが、どうやら同じファイル名では登録できないようなので、面倒でも別々のファイル名にしておきます。
3. AssetsのContens.json書き換え
対象のプロジェクトの Assets.xcassetsnの下に 生成したアイコンファイル(Icon.png以外)を移動し、ディレクトリ内にあるContens.jsonを以下のように書き換えます。 保存すると瞬時に反映されると思います。
{ "images" : [ { "size" : "20x20", "idiom" : "iphone", "filename" : "Icon-20@2x.png", "scale" : "2x" }, { "size" : "20x20", "idiom" : "iphone", "filename" : "Icon-60@.png", "scale" : "3x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-29@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-29@3x.png", "scale" : "3x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-40@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-40@3x.png", "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-60@2x.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-60@3x.png", "scale" : "3x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "Icon-20@.png", "scale" : "1x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "Icon-20@2x-1.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-29@.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-29@2x-1.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-40@.png", "scale" : "1x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-40@2x-1.png", "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-76@.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-76@2x.png", "scale" : "2x" }, { "size" : "83.5x83.5", "idiom" : "ipad", "filename" : "Icon-83_5@2x.png", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } }
以上です。
iPhone8が出たらまた増えるんだろうか。。
macOS Sierra(10.12.5) + xcode8.3.3 で sqlcipherをコンパイル
xcode5.xの頃から使っていたsqlcipher(sqliteの暗号化組み込み実装)を 最新の環境でも仕込んでみます。
officialには情報が乏しいですが、swift3にも組み込めます。
まずは macOSにsqlcipher(コマンドライン)をコンパイルしてみます。
ここの手順でほぼ問題ないですが少しだけ手を入れないとコケます。 tomolog.net
■ 手順
1. sqlcipherをclone(git) 2. コンパイル
■ 詳細
1. sqlcipherをclone(git)
ここはさくっと
mkdir work_cipher cd work_cipher git clone https://github.com/sqlcipher/sqlcipher.git
2. コンパイル
ここが結構キモで、従来はopensslを落としてきてコンパイルして cryptライブラリを 用意して・・・等々割りと手間でしたが今は一切不要です。
cd sqlcipher ./configure --enable-load-extension --enable-tempstore=yes --with-crypto-lib=commoncrypto CFLAGS="-DSQLITE_HAS_CODEC " LDFLAGS="-framework CoreFoundation -framework security" make
これで、多少のwarningはでるもののコンパイルされてsqlcipher(コマンド)が生成されます。 ./sqlcipher [db filename] して PRAGMA Key=“暗号化キー"として作業すれば、 暗号化された sqlite の databaseができます。
次回はこれをアプリに組み込んでみたいとおもいます。
GoogleMaps SDK for iOS を手動で最新にする
swiftにも組み込めるGoogleMaps SDK for iOSですが、なぜか オフィシャルのスタートページからは常に 「SDK ソースファイル GoogleMaps-2.0.1 をダウンロードします。」と 少し前のstableしかリンクされておらず、組み込んでシュミレータでsdkを
呼び出すと…
Google Maps SDK for iOS version: 2.0.26137.0 New version of Google Maps SDK for iOS available: 2.3.30037.0
こんなメッセージを常に見る羽目になります。。
スタートガイド | Google Maps SDK for iOS | Google Developershttps://developers.google.com/maps/documentation/ios-sdk/start?hl=jadevelopers.google.com
CocoaPods側から入手すると最新になるようなので、手動でも最新版を入手して見ようと思います。 ruby / gem を入れたくない一心でがんばってみます(^^;
■ 手順
2. SDKのダウンロード / 展開 3. xcode上での対応 4. build / run
■ 詳細
1. CocoaPodsのSpecファイルから最新のSDKバージョンを確認
以下にアクセスして、最も新しいバージョンをクリックし、GoogleMaps.podspec.jsonを開きます。 github.com
2017/7/6 時点では、2.3.1
が最新
source で始まる項目を探して、その下のURLをメモしておきます。
2. SDKのダウンロード
メモしておいたURLを開いてSDKをダウンロード / 展開
3.xcode上での対応
公式ページに乗っている手順と同一でOKです。 まず、以下のファイルを削除します。(Move to trash してゴミ箱も空に)
GoogleMaps.bundle GoogleMaps.framework GoogleMapsCore.framework GoogleMapsBase.framework GoogleMapsM4B.framework (Google Maps APIs Premium Plan利用時のみ)
先程展開したzipファイルの中身から、それぞれのframeworkを登録(プロジェクトにドラッグ)します GoogleMaps.framework GoogleMapsCore.framework GoogleMapsBase.framework GoogleMapsM4B.framework (Google Maps APIs Premium Plan利用時のみ)
登録時に Copy items if needed のチェックを忘れずに!!!
登録後、GoogleMaps.framework を右クリックして、[Show In Finder] を選択します。 [GoogleMaps.bundle] を [Resources] フォルダからプロジェクトにドラッグします。 プロンプトが表示されたら、[Copy items into destination group’s folder] が選択されていないことを確認します。
[Product] > [Clean] を選択してプロジェクトのクリーンアップを行った後、[Product] > [Build] を選択して再ビルドを行います。
結果:
Google Maps SDK for iOS version: 2.3.30037.0
おつかれさまでした。
swift3 storyboard で UIScrollviewを実装
swift3 storyboard で UIScrollviewを実装
Objective-Cのころからも使っているUISCrollviewですが、swift3になってどうにも うまくいかなくなったので、うまくいった方法を載せておきます。 (AutoLayoutでクチャクチャにならないようにmix Layoutにします)
具体的な流れとしては、ググるとたくさん出てくる例よりも可能な限り省略します(^^; 特にAutoLayoutはハマるので基本使いません。 AutoresizingMaskだけで頑張ります。
■ 手順
下準備: もとのviewcontroller のサイズを広げる 1. Storyboard のスクロールさせたいview controllerにUISrollviewを貼る 2. UIScrollviewの下にScrollviewと同じサイズで、viewを貼りその中に必要な部品を配置。 3. UIScrollviewのAutoresizingMaskを全部チェックして自動伸長にする 4. 該当のviewcontroller.swiftに IBOutlet を設定 5. scrollview の contentOffsetとcontentSizeを設定 6. IBoutlet を Storyboard とつなぐ
■ 詳細
下準備: もとのviewcontroller のサイズを広げる
ここでは縦900に。
2. UIScrollviewの下にScrollviewと同じサイズで、viewを貼りその中に必要な部品を配置。
3. UIScrollviewのAutoresizingMaskを全部チェックして自動伸長にする
4. 該当のviewcontroller.swiftに IBOutlet を設定
class ViewController: UIViewController,UIScrollViewDelegate { @IBOutlet weak var myScrollView: UIScrollView! override func viewDidLoad() {
5. scrollview の contentOffsetとcontentSizeを設定
myScrollView.contentOffset = CGPoint.zero myScrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 900)
ここでは、横幅はviewサイズで縦900とした。
6. IBoutlet を Storyboard とつなぐ
※ contentSizeだけ定義すると、ズレちゃうので、contentOffsetで初期化しておくこと。 てかいつになったら storyboardだけで完結できるんだろうか・・・・・・。
サンプル github.com
Adobe カラーホイール を使う
Adobe カラーホイール を使う
adobe社が提供するカラーホイールがものすごく便利なのでご紹介。
Adobe CCユーザじゃなくても使用可能です(AdobeIDがあれば保存もできます)
RGB の値だけでなく Web 16進コードもわかりやすい。
例えば親しい類似色を探したいときは
5つあるパレットの真ん中に数値を入れると類似色が抽出されます。
地味に便利な機能がこれ
画像から作成
例えばSwift3ロゴだと
右上のカラーホイールをクリックすると
取り出した色のカラーコードが抽出されます。
デザイナさんが上げてくる文字の色や枠の色なんかもデザインカンプを
投げ込んで色コード抽出して、このページごと印刷してスクラップブックに
入れておくと悶えるほどに便利です。
近似色でもうちょっと色濃く/薄くとかまるで困らない。
Swift3 で LOG_METHODを使う
Swift3 で LOG_METHOD を使う
■ 概要
Objective-C時代に愛用させていただいていた マクロ LOG / LOG_METHOD を
Swift3向けに書き直しました。
Swift2.x向けはすでに作っている方がいらっしゃったので、forkさせてもらって
手直ししてます。
Obejective-C版
Swift2.x版
Swift3版(Swift2.x版のたいぞうさんのに少しだけ手を加えました)
で、作り直したものの自分だと微妙にわかりにくかったので、
今はこんなふうにしてます。
Global.swift
--------------------------------------------------------------------------------------------------
#if DEBUG
func LOG_METHOD(funcName:String = #function,lineNum:Int = #line,fullFileName:String = #file ){
let fileName:String = fullFileName.replacingOccurrences(of: ".*/", with: "", options: String.CompareOptions.regularExpression, range: nil)
print("[\(fileName)]","- \(funcName)")
}
func LOG(msg:Any) {
print(msg)
}
#else
func LOG(msg:Any) {}
func LOG_METHOD() {}
#endif
結果
--------------------------------------------------------------------------------------------------
[TopViewController.swift] - viewDidLoad()
[TopViewController.swift] - db_reload(inmonth:inday:)
さくらのレンタルサーバでmysqlをコマンドラインから使う
さくらのレンタルサーバで mysql をコマンドラインから使う
対象さくらのレンタルサーバは以下の通り
■ 手順
1) コントロールパネルからDBを新規作成
2) sshでログインして繋ぐ
1) コントロールパネルからDBを新規作成
1-1) コントロールパネル
メニュー左側のデータベースの設定を押す
データベースの新規作成を押す
必要事項を記入し作成を押すと上記の様になる。
ここでデータベースのサーバ名がわかる。