読者です 読者をやめる 読者になる 読者になる

Rodhos Soft

備忘録を兼ねた技術的なメモです。

toolbarの色をかえる

let button = UIBarButtonItem(customView:button) self.toolbarItems = [flexl, button, flexr] self.navigationController?.toolbar.barTintColor = UIColor.White self.navigationController?.setToolbarHidden(false, animated: true)

無限ループ

UICollectionViewを継承したクラスをつくり、layoutsubViewsで中心からコンテンツが1/4程度外れていたらContentOffSetを中央へ移動させるようにすれば良い。 let totalContentWidth = CGFloat(cellCount) * cellWidth let centerOffsetX = totalContentWidth…

BehaviorSubject

BehaviorSubjectは最後の値を覚えていてsubscribeで即座に値が返ってくる。最初の値はこちらで指定できる。 class Temperature { private let behaviorSubject = BehaviorSubject(value:0) var behavior : BehaviorSubject<Int> { return behaviorSubject } func </int>…

ダイナミックタイプ

自動的に文字の大きさを設定してくれる。フォントを対応するタイプを指定すれば良い。 UIFont.preferredFont(forTextStyle: .body) ストーリボードでもできる。コンテンツサイズの変更は次の通知を受ければ解る。 Notification.Name.UIContentSizeCategoryDi…

UITextViewの縦方向の中央寄せ

contentSizeをオブザーブして textView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil) contentSizeに変化があれば、中身を調節する。 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NS…

Observable

次のようなクラスを定義する。 class Temperature { private let eventSubject = PublishSubject<Int>() var event: Observable<Int> { return eventSubject } func doSomething(x:Int) { eventSubject.onNext(x) } } テキストフィールドの編集が終わったタイミングで</int></int>…

RXSwift

RxSwiftを試してみた。CocoaPodでインストールした上で以下をインポート import RxSwift import RxCocoa 使い方は textFiled!.rx.text .map { guard let text = $0, text.lengthOfBytes(using:.utf16) > 0 else { return "" } return "\(text)!" } .bindTo(l…

継続モナド

継続モナドはSwiftで段階的に作れる。1. まず継続渡しの関数を作る。 func getA(complete:(String)->Void) { complete("X") } 2. 継続渡しの関数を引数にとるクラスを作る。 typealias Func<T> = (T)->Void public struct RDFuture<T> { public var f:(Func<T>)->() p</t></t></t>…

proxy

git

.gitconfig に設定を書くこれはターミナルでできる。 git config --global http.proxy http://name:pass@host:port git config --global https.proxy https://name:pass@host:port

Realm

Realmを試してみた。便利だ。。 import Foundation import RealmSwift class Man : Object { // ObjectはRealmのクラス dynamic var name = "" // dynamicはobjective-Cのランタイムを利用して値にアクセスする dynamic var age = 10 let cats = List<Cat>() // L</cat>…

proxy

export USERNAME= export PASSWORD= export HOST= export PORT= export PROXY=$USERNAME:$PASSWORD@$HOST:$PORT export http_proxy=http://$PROXY export https_proxy=https://$PROXY export ftp_proxy=ftp://$PROXY export HTTP_PROXY=http://$PROXY export…

コレクションビューの隙間

水平な線形レイアウトで隙間を調整したい時、しかもminimumをなくしたいと考えた時、ラインも修正すると良い。

セクション

セクションは流れていく。それを止めるには stackoverflow.com

画面の一部を切り取る

resizableSnapshotView これとUIView.transitionを組み合わせて一部分の画面遷移を再現できる。

viewWillLayoutSubviews

viewWillLayoutSubviewsはviewのlayoutSubviewsの前に呼ばれる。 ちなみにlayoutSubviewsはレイアウト更新タイミング、制約つけたいときはupdateConstraints。viewWillLayoutSubviewsは結果的にViewWillAppearとViewWillDidAppearの中間で呼ばれることになる…

インライン展開

iOS

CG_INLINEを使えば良い。

画面切替

iOS

snapshotViewとの組み合わせでいける。 let currentView = self.view.snapshotView(afterScreenUpdates: true)! self.view.addSubview(currentView) UIView.transition(with: currentView, duration: 0.5, options: [.transitionFlipFromRight], animations:…

幾つかのメモ 2

ImageButtonはボタン背景がついてしまう。 画像つきボタンはImageViewを使えば良い。 文字付きアイコンはShapeを定義してバッググラウンドに指定する。 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/hoge"/> </solid></shape>

SNS関連

ツイート 以下でツイート対応アプリが出る。 String url = "http://twitter.com/share?text=" + text; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

GSON関連

リストを変換 Gson gson = new Gson(); Type listType = new TypeToken<List<ItemClass>>(){}.getType(); List<ItemClass> items = gson.fromJson(jsonArray, listType);</itemclass></list<itemclass>

レイアウト関連

Drawableフォルダには画材的なxmlを置く。 dimensフォルダにはデバイスの大きさごとの指定を置く。 FrameLayoutは何もしないレイアウト RelativeLayoutは何々は何々の上にあるとかを指定するレイアウト 絶対座標は使わないこと。 データバインディングはデー…

基本的なこと

他の画面から送られてきたデータを取得 Bundle extras = getIntent().getExtras(); if (extras != null) { mHoge = extras.getString("HOGE"); setTitle("title"); } } 他のxmlファイルのレイアウトを取得 mView = (LinearLayout) getLayoutInflater().infla…

エミュレータのプロキシ認証

やったこと。 エミュレータの設定でプロキシ設定する うまくいかなかったのでコマンドライン上でabd, emulatorを使うことにした。 まずパスを通した。 export PATH=/Applications/adt-bundle-mac-x86_64***/sdk/platform-tools:$PATH export PATH=/Applicati…

幾つかのメモ

アダプター アイテムからアイテム用のビューへの変換、動的に行われる。getView convertViewはリサイクルされてきたビューのこと。 データバインディング DataBindingUtil.inflateでbindingを取得して、そいつにデータをセット、 データはレイアウトのほうで…

画面遷移カスタマイズ2 viewの遷移

ビューの遷移を真似たい場合snapshotViewとtransitionをくみあわせる。 let currentView = self.view.snapshotView(afterScreenUpdates: true)! self.view.addSubview(currentView) setup() UIView.transition(with: currentView, duration: 0.5, options: […

画面遷移カスタマイズ

class PushAnimator : NSObject, UIViewControllerAnimatedTransitioning { func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { return 1.0 } func animateTransition(using transitionContext: U…

UIViewのレイアウトライフサイクル

制約更新 updateConstraintsIfNeeded() → updateConstraints()が呼ばれる。 フレーム更新 layoutIfNeeded() → layoutSubViews()が呼ばれる。 端末回転によるフレーム変更、UIScrollViewでcontentOffsetの変更時等 レンダリング setNeedsDisplay() → drawRect…

AutoLayoutの制約式

基本は A = aB + b の連立方程式を解く。 Alignment Rectangle (外接矩形) 装飾(影、角丸等)を除いたビュー。AutoLayoutはフレームではなくAlignment Rectangleを用いている。 Alignment Rectangleの表示方法 Edit Scheme のRunのArgumentで起動オプションと…

Adaptive Layout

Adaptive Layout = レスポンシブレイアウトiPhoneとiPadという端末の区別はない。 どのようなウィンドウサイズでもレイアウトを維持する。 二つのポイント1. AutoLayout 2. トレイトコレクション サイズクラスはトレイトコレクションに含まれる値の一つ サイ…

商品の値段とNSNumberFormatter

SKProductの価格の加工などで使う。 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.formatterBehavior = NSNumberFormatterBehavior10_4; formatter.numberStyle = NSNumberFormatterCurrencyStyle; formatter.locale = loca…

iPhone/iPadの画面

iOS

基本的には以下をみるqiita.comデザイン的には基本は横幅を気にする。 5sだと320 6だと375 6plusだと414 ipad 768 ipad pro 1024縦はテーブル等で表示する場合はそこまで気にならない。ipadは回転を許容する場合は気にする必要がある。 5sだと 568 6だと 667…

FutureパターンをSwiftで書く

Swiftでまずリクエストプロトコルを作る。 public protocol Request { func getResult()->String } それを実装するFurureを作る。 public class Future:Request { private let semaphore:DispatchSemaphore = DispatchSemaphore(value: 0) private var ready…

Appleのサンプルムービー

iOS

http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

回転させたときのレイアウト変更

iOS

XCode8で回転させた場合のレウアウト変更はSizeClassを使うとできる。 拘束条件を個別にinstallで設定する。全画面にしたい場合は上下左右にマージン0で設定してやる。サイズの変更は以下の参考に書かれているような変更で呼び出しを受ける。 iOS8以降で、ど…

強制回転

iOS

iOSで強制的に回転させる方法は以下の一文で良いようだ。 UIDevice.current.setValue(NSNumber(integerLiteral:UIDeviceOrientation.portrait.rawValue), forKey: "orientation")

Tensorflowをあらためてやってみた。

あらためてTensorflowをやってみた。以前より理解は進んでいる気がする。 #coding:UTF-8 import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) import tensorflow as tf ## 画像は28*28ピクセル = 784ピクセル ## この画像か…

StoreKitメモ

参考 以下を参考にした。 d.hatena.ne.jp以下がデータフォーマットがあり詳しい ameblo.jpqiita.com SKProductRequest initWithProductIdentifiers:でプロダクトIDを指定しプロダクト情報を取得するリクエスト(SKProductsRequest)を作成する。 これは非同期…

プレゼンタに加えてドメイン層を入れる

MVC

プレゼンタを導入した後は今回はさらにドメイン層(UseCase)を取り入れたい。 プレゼンタ プレゼンタはUseCaseにまとめられた処理を用いてビューないしUseCaseからの返事を処理する。 ユースケース UseCaseはビジネスロジックを記述するところでそれのみで単…

Adaptive Design

UITraitCollection デバイスの情報が入っている。 Size class (H,V) iphone/ipad 倍率 Size Class 以下を参考 qiita.com 各種UI部品のUITaraitCollectionでの変化 以下を参考 qiita.com UISplitViewController Master/Detailの両方が見える時、Masterだけが…

FaceBookグラフ

単に以下のようにやるだけでJSONが返却される。 let req = FBSDKGraphRequest(graphPath: "me" , parameters: ["fields":"id,email,name"]) req?.start(completionHandler: { (con, result, error) in if let error = error { print("error") return } print…

FaceBookログイン

基本はdevelopers.facebook.com にすべて書いてある。フレームワークとしてFBSDKCoreKit、FBSDKLoginKitあたりをDLして入れる。ここでpodを使っても良い。 info.plistの設定でFaceBookAppIDの文字列を間違えないようにする。FBSDKCoreKitのFBSDKApplicationD…

ハフマン符号

"AABABCAC"を単純にbitを割り当てるとA 00, B 01, C 10のように1文字に2ビットで、計16ビットかかる。 出現頻度を調べる。 "AABABCAC"のAは4、Bは2、Cは2で現れる。 ハフマン木をつくる。 最も低い出現頻度とその次のものを取ってくる。今は,B,C。{B,C}次の…

insertion sort 挿入ソート

O(n^2)な実行時間。ほぼ整列している場合は非常に速い。1. 先頭から整列してない数を探す。 2. その数を整列させるように差し込む。 2,3,5,4,2 2,3,5,"4",2 2,3,"4",5,2 2,3,4,5,2 2,3,4,5,"2" "2",2,3,4,5

ドメイン駆動

参考にしたもの ドメイン駆動設計 ( DDD ) をやってみよう ドメイン駆動設計のためのオブジェクト指向入門 実践に向けたドメイン駆動設計のエッセンス 3つのレイヤー プレゼン層 表示 (ビュー, プレゼンタ) ドメイン層 抽象化された仕様 (ユースケース, ト…

ReSwiftの流れ

ReSwiftというSwiftのRedux実装のライブラリを触ってみました。github.com アプリはStoreを一個持ちStoreはこちらで定義した状態(State)を持ちます。 各種のReducerというのをStoreに登録します。 ReducerはActionが発行されたらどのようにStateを変更するの…

基本操作

vi

最低限 入力モードへの切替はiで、コマンドモードに戻るときはesc 保存 :w、保存して終了:wq、終了:q 参考 viの使い方/基本操作

マルチスレッドのデザインパターン

以下を参照しつつマルチスレッドのデザインパターンを概観し、適宜Swiftでの実装を考える。 Single Threaded Execution (同時にできない) クリティカルセクション。 Immutable (不変) Guarded Suspension (用意できるまで待つ) Balking (用意できないならや…

GLKitミニマム2 OpenGL

テンプレートからOpenGL部分を残し、データを三角形の回転するだけに変えてみたもの。頂点シェーダー attribute vec4 position; uniform mat4 modelViewProjectionMatrix; void main() { gl_Position = modelViewProjectionMatrix * position; } フラグメン…

GLKitミニマム

テンプレートを三角形が回転するだけのコードに削ってみた。 import GLKit import OpenGLES func BUFFER_OFFSET(i: Int) -> UnsafePointer<Void> { let p: UnsafePointer<Void> = nil return p.advancedBy(i) } class GameViewController: GLKViewController { var rotat</void></void>…

Swift落穂ひろい プトロコル準拠

Swiftで少しわかりにくかった所を整理しておきます。Swift3です。 二つのプロトコル準拠 複数のプロトコル準拠な変数宣言に&を使います。 let animal3:Animal & Helloable = seri Switch文で特定の型に対して protocol Animal { } protocol Helloable { func…